2013-11-01 120 views
1

我想知道class initialization的最佳做法是什麼。類初始化 - 屬性vs字段

可以寫成:

private myClass mc = new myClass(); 

或者:

private myClass mc { get; set; } 

public Foo() 
{ 
    mc = new myClass(); 
} 

我總是傾向於把它作爲一個field。使用課程作爲property有什麼缺點?我在谷歌上搜索了一些,但沒有一個結果給了我這個具體問題的一個很好的答案。

+0

[C#3.0+中屬性和字段之間的區別]的可能重複(http://stackoverflow.com/questions/653536/difference-between-property-and-field-in-c-sharp-3- 0) – Kami

+0

第三個選擇是你可以編寫'private myClass mc; public Foo(){mc = new myClass(); }' –

+1

這不是重複的。 –

回答

3

如果它是私人的,那麼它就沒有顯着的好處。我只是把它作爲一個領域。我使用屬性作爲將API與其他類進行通信的一種方式。

+0

我錯過了這個財產是私人的事實,因爲我以前從未見過任何人這樣做。私人物業絕對沒有好處。 –

+0

@DavidArno我故意將它們設置爲私有,因爲我想知道'class initialization'應該如何在類中完成。根據答案,我只會堅持'田徑':) – DeMama

+0

@DeMama對你有好處:) –

0

您在第二個示例中使用屬性是不必要的。你可以把它寫成:

private myClass mc; 

public Foo() 
{ 
    mc = new myClass(); 
} 
0

屬性意味着是getter/setter方法,這意味着他們所提供的機制,信息隱藏的一部分。讓他們成爲私人並不多,因爲班上的所有方法都可以看到私人成員。

0

我perefer第一種方式:

私人myClass的MC =新MyClass的();

因爲:

  • 私人性質沒有好處。
  • 如果你創建了另一個構造函數,除非你創建了一些Init方法或者調用this(),否則就複製初始化代碼,這不像初始化字段那樣清晰。