所以我得到了一個小程序來寫,我做得很好,但後來被問及以下,我有點困惑。面試問題(在C#中)
以下是什麼值?
//我告訴他們,因爲他們沒有初始化,他們會得到一個錯誤,所以他們都指向內存中某個地址......
int a;
Object b;
int d = a;
bool c;
如果在Java中,與
替換最後一行boolean c;
請讓我知道正確的答案,因爲我相信它會再次提出。謝謝:)
所以我得到了一個小程序來寫,我做得很好,但後來被問及以下,我有點困惑。面試問題(在C#中)
以下是什麼值?
//我告訴他們,因爲他們沒有初始化,他們會得到一個錯誤,所以他們都指向內存中某個地址......
int a;
Object b;
int d = a;
bool c;
如果在Java中,與
替換最後一行boolean c;
請讓我知道正確的答案,因爲我相信它會再次提出。謝謝:)
.net CLR將所有字段和當地人初始化爲默認值。
就你的情況而言,這是0
,null
和false
。
但是,在任何情況下,此代碼都不會編譯。
在一個方法中,C#不允許你使用未初始化的本地數據,所以d = b
將不能編譯。
作爲實例字段,C#不允許您在構造函數內部使用this
,因此d = a
不會在字段初始值設定項中編譯。
作爲靜態字段,這將編譯,但static
關鍵字丟失。
在Java中,所有這一切都還不錯,但Java並允許您在字段初始使用this
。
因此,此代碼在Java中作爲實例字段有效。
謝謝大家,這些都是我給他們的價值,儘管程序需要我們初始化它們。 – user710502 2011-05-31 15:20:24
在C#中,int
的默認值爲0. Object
爲空。並且bool
是錯誤的。
一個簡單的谷歌發現asnwer。
http://msdn.microsoft.com/en-us/library/83fhsxwc(v=vs.80).aspx
謝謝,我給你一個投票:) – user710502 2011-05-31 15:21:24
這是真的*但* C#是通過說如果你試圖使用兩個未初始化的變量(即使它們都具有.CLR默認值)來防止你從一個常見的C錯誤,那麼它是一個錯誤。 – 2011-05-31 15:25:53
++,並且它可以幫助您在未來形成一個不太可能的,但是可能性更小的決定,即這些值可能會發生變化。 – 2011-05-31 15:27:00
爲什麼Java標記?你想知道Java中的值嗎? – 2011-05-31 15:16:19
是的請謝謝 – user710502 2011-05-31 15:16:39
假設下面的C#答案是正確的,沒有區別。 Java默認值也是'0','null'和'false'。 – 2011-05-31 15:19:14