2013-06-03 47 views
1

我有一個類的結構是這樣的:我應該使用屬性來訪問基類全局變量嗎?

public class PingtreeReq : ProviderRequest 
{ 
    // I want to use _residentialService here! 
} 

public class ProviderRequest 
{ 
    // Should this be a variable or property? 
    protected Dictionary<int, string> _residentialSerice; 
} 

如果我想使用這個varable從MyLenderRequest,是它更適合使用屬性或訪問它像這樣作爲受保護的足夠varable?

+2

你的意思是你在'ProviderRequest'中有一個公共字段'_residentialStatus'? – V4Vendetta

+2

@ V4Vendetta - 從這個問題我推斷_residentialStatus目前是'私人'和OP奇怪他是否應該使它受到保護或有一個(受保護的)屬性。順便說一句。我會使用一個屬性,在'ProviderRequest'裏面改變'_residentialStatus'的每一個調用,它並不需要直接使用這個變量來使用這個屬性。然後,如果沒有可以直接使用變量的地方,我可能會將其更改爲自動屬性。 – Corak

+0

什麼是C#上下文中的「全局變量」?發佈'_residentialStatus'定義。 – Dennis

回答

1

如果你打算使用它在外部使它成爲一個公共屬性,如果你只打算在繼承類中使用它使它成爲一個受保護的屬性。

public class ProviderRequest 
{ 
    protected Dictionary<int, string> ResidentialService { get; set; } 
} 
+2

即使在被定義的類內部使用時,我也會直接使用該屬性而不是字段。 – Bernard

+0

@Bernard - 同意。如果它只是一個只返回值的簡單屬性,那麼*可能*。但是,再次,爲什麼不讓它'{get;私人設置; }'。如果你想添加一些邏輯到屬性你有使用它的代碼的一部分和沒有的部分,這不利於可預測性。 – Corak

+0

是的,我同意。在他的情況下,他談到了一個領域,而不是使該領域對外可用,我會添加一個屬性來公開該領域。 – Molibar

3

_residentialStatus更像是一個私人變量,這是私人的類。您可以在ProviderRequest中添加一個受保護的屬性,該屬性封裝了私有變量並將其用於ProviderRequest