java - 面试问题(C#)

标签 java c#-4.0 c#-3.0

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

下面的值是什么?

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

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

如果在 Java 中,请将最后一行替换为

boolean c;

请让我知道这个问题的正确答案,因为我确信它会再次被提出。谢谢:)

最佳答案

.Net CLR 将所有字段和局部变量初始化为其默认值。
在您的例子中,即 0nullfalse

但是,该代码在任何情况下都无法编译。

在方法内部,C# 不允许使用未初始化的局部变量,因此 d = b 将无法编译。
作为实例字段,C# 不允许您在构造函数内部使用 this,因此 d = a 不会在字段初始值设定项中编译。

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

<小时/>

在 Java 中,所有这些也是如此,只是 Java 允许您在字段初始值设定项中使用 this
因此,此代码在 Java 中作为实例字段是有效的。

关于java - 面试问题(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189724/

相关文章:

c#-3.0 - 从 using 内部返回语句

mysql - 将数据绑定(bind)到 GridView

java - JPA 父子中具有复合 id 的一对多关系

java - Android 中的 MVP 设计模式问题

c# - 使用另一个列表的内容过滤一个列表

wpf - 如何确保装饰层中的验证显示在其他控件后面

java - MongoDB 使用聚合框架计算字段为 true 的次数

java - 自动提交 OpenJPA 写入

c# - C# 4 的协变是否支持泛型的嵌套?

c# - Linq to SQL 类生命周期