0
我有一個自定義的結構:
C#奇怪的行爲
struct A
{
public int y;
}
空constuctor自定義類:
class B
{
public A a;
public B()
{
}
}
,這裏是主要的:
static void Main(string[] args)
{
B b = new B();
b.a.y = 5;//No runtime errors!
Console.WriteLine(b.a.y);
}
當我運行上述程序時,它不會給我一個ny錯誤,儘管我沒有在B類構造函數中初始化結構體A ..'a = new A();'
我對這個問題感到困惑。爲什麼你會期望一個* runtime *錯誤?我可以看到爲什麼你會期望*編譯時*錯誤,但爲什麼你會期望*運行時*錯誤?我懷疑你認爲運行時錯誤在這裏是適當的,這是對「價值類型」意味着什麼的深刻誤解的症狀。你能解釋爲什麼你認爲這應該是一個運行時,而不是編譯時錯誤?如果字段「a」的類型是「double」而不是struct A,您是否也期望運行時錯誤?爲什麼或者爲什麼不? – 2010-05-08 15:27:05