簡體   English   中英

C#中的班級成員

[英]The class members in C#

對於具有默認非零值的類成員,C#的最佳實踐是什么?

您可以這樣寫:

private int someField = 9;
public int SomeField
{
   get ( return someField; }
   set { someField = value; }
}

或者這樣:

public Int32 SomeField = 9;

但是Int32與int相同。

那么,哪種方法更好,並且可以減少問題的發生?

只需使用C#別名,它們就更短了,因此存在。

您不應將字段public -這樣會破壞封裝。

簡而言之,使用:

private int someField = 9;
public int SomeField
{
   get ( return someField; }
   set { someField = value; }
}

@Oded提出的答案的替代方案:

public int field1 { get; set; } //auto-implemented property, :)

public MyClass() {
    field1 = 9; //or other default value
}

還要注意,如果您有多個構造函數,請不要在其聲明中顯式初始化字段。 因為編譯器會生成代碼來初始化每個構造函數的字段。 在這種情況下,請使用一個基本構造函數初始化您的字段,然后讓其他構造函數調用此基本構造函數。

int field1;
int field2;
int field3;

public MyClass()
{
  field1 = 12;
  field2 = 1;
  field3 = 5;
}
public MyClass(int SomeValue) : this()
{
   field1 = SomeValue;
}

public MyClass(int SomeValue, int SomeOtherValue) : this()
{ 

   field1 = SomeValue;
   field2 = SomeOtherValue;
}

作為最佳實踐,我將避免像這樣硬編碼值。 他們以后維護起來可能很棘手。 最好的選擇是在集中位置創建一個枚舉列表,然后將其轉換為Integers。 這樣可以更好地進行控制/維護。

public enum SomeFieldValue
        {
            ValueOne = 1,
            ValueTwo = 2,
            ValueThree = 3
        }

        public int MyDefaultSomeValue = (int) SomeFieldValue.ValueOne;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM