面试问题(C#中)

时间:2011-05-31 15:13:01

标签: java c#-4.0 c#-3.0

所以我给了一个小程序来写,我做得很好,但后来我被问到以下内容,我有点困惑。

以下是什么价值?

//我告诉他们他们会因为没有初始化而得到错误,所以他们指向内存中的某个地址......

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

如果是在Java中,用

替换最后一行
boolean c;

请让我知道正确答案,因为我相信它会再次提起。谢谢:))

3 个答案:

答案 0 :(得分:6)

.Net CLR将所有字段和本地值初始化为默认值 在您的情况下,这是0nullfalse

但是,此代码在任何情况下都不会编译。

在方法中,C#不允许您使用未初始化的本地人,因此d = b将无法编译。
作为实例字段,在您进入构造函数之前,C#不允许您使用this,因此d = a将无法在字段初始值设定项中进行编译。

作为静态字段,这将编译,但缺少static关键字。


在Java中,除了Java允许您在字段初始值设定项中使用this之外,所有这些都是正确的。
因此,此代码在Java中作为实例字段有效。

答案 1 :(得分:1)

在C#中,int的默认值为0. Object为空。 bool是假的。

一个简单的谷歌找到了asnwer。

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

答案 2 :(得分:1)

a == 0, b == null, d == 0, c == false