2011-05-31 36 views
0

所以我得到了一個小程序來寫,我做得很好,但後來被問及以下,我有點困惑。面試問題(在C#中)

以下是什麼值?

//我告訴他們,因爲他們沒有初始化,他們會得到一個錯誤,所以他們都指向內存中某個地址......

int a; 
Object b; 
int d = a; 
bool c; 

如果在Java中,與

替換最後一行
boolean c; 

請讓我知道正確的答案,因爲我相信它會再次提出。謝謝:)

+0

爲什麼Java標記?你想知道Java中的值嗎? – 2011-05-31 15:16:19

+0

是的請謝謝 – user710502 2011-05-31 15:16:39

+0

假設下面的C#答案是正確的,沒有區別。 Java默認值也是'0','null'和'false'。 – 2011-05-31 15:19:14

回答

6

.net CLR將所有字段和當地人初始化爲默認值。
就你的情況而言,這是0,nullfalse

但是,在任何情況下,此代碼都不會編譯。

在一個方法中,C#不允許你使用未初始化的本地數據,所以d = b將不能編譯。
作爲實例字段,C#不允許您在構造函數內部使用this,因此d = a不會在字段初始值設定項中編譯。

作爲靜態字段,這將編譯,但static關鍵字丟失。


在Java中,所有這一切都還不錯,但Java並允許您在字段初始使用this
因此,此代碼在Java中作爲實例字段有效。

+0

謝謝大家,這些都是我給他們的價值,儘管程序需要我們初始化它們。 – user710502 2011-05-31 15:20:24

1

在C#中,int的默認值爲0. Object爲空。並且bool是錯誤的。

一個簡單的谷歌發現asnwer。

http://msdn.microsoft.com/en-us/library/83fhsxwc(v=vs.80).aspx

+0

謝謝,我給你一個投票:) – user710502 2011-05-31 15:21:24

+0

這是真的*但* C#是通過說如果你試圖使用兩個未初始化的變量(即使它們都具有.CLR默認值)來防止你從一個常見的C錯誤,那麼它是一個錯誤。 – 2011-05-31 15:25:53

+0

++,並且它可以幫助您在未來形成一個不太可能的,但是可能性更小的決定,即這些值可能會發生變化。 – 2011-05-31 15:27:00

1

一個== 0, b == NULL, d == 0, ç==假

+0

謝謝,我給你一個投票:) – user710502 2011-05-31 15:21:33