我在PDF教程中找到了以下代码:
public class Chien
{
public static int NombreDeChiens { get; set; }
private string prenom;
public Chien(string prenomDuChien)
{
prenom = prenomDuChien;
NombreDeChiens++;
}
public void Aboyer()
{
Console.WriteLine("Wouaf ! Je suis " + prenom);
}
}
尽管constructor
中有此增量,但是此代码中没有初始化。那怎么可能呢?
答案 0 :(得分:4)
属性不过是用get和set方法包装的字段。由于字段 do 具有初始值,属性也是如此。
例如以下代码:
public int MyProperty { get; set; }
由编译器翻译成如下形式:
private int _myProperty; // the actual name of the field defers and is only known by the compiler
public int get_MyProperty() { return this._myProperty; }
public void set_MyProperty(int value) { this._myProperty = value; }
因此问题归结为“具有个字段一个默认值”?这个问题的答案是肯定的,他们这样做:null
用于引用类型,所有结构的默认值,例如0
代表int
,{{1}代表0f
。