爲什麼這個代碼輸出50的值?C# - 爲什麼不構造函數寫入初始化值?
class Program
{
static void Main(string[] args)
{
var myClass = new TestConstructor() { MyInt = 50 };
}
}
class TestConstructor
{
public int MyInt { get; set; }
public TestConstructor()
{
Console.WriteLine(this.MyInt);
Console.Read();
}
}
一般來說它是壞主意,使用性能和especia從構造函數中提取虛擬方法。我認爲這是Microsoft試圖通過允許不可見字段變量支持屬性並強制僅通過這些屬性進行訪問來簡化屬性的結果。 – ja72 2011-06-07 14:32:42
@ ja72:爲什麼你不使用屬性,當他們是非虛擬的?我同意從構造函數調用虛擬方法的風險,但屬性應該沒問題。特別是,來自構造函數的*設置*屬性是完全正常的。 – 2011-06-07 15:08:06
@Jon - 我明白了你的觀點,但是當字段可用時,仍然讓我不自在地使用構造函數中的屬性。基本類屬性可能需要字段是私有的(但是應該首選':base(...)'語法)。也許我不夠務實......哦,好吧。 – ja72 2011-06-08 01:13:53