gpt4 book ai didi

c# - 设置和实例化类级变量的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 19:46:15 25 4
gpt4 key购买 nike

(在 java 或 c# 中)之间是否有区别:

public class Foo {
Bar1 bar1;
Bar2 bar2;

public Foo(Bar1 bar1, Bar2 bar2) {
this.bar1 = bar1;
this.bar2 = bar2;
}
}

public class Foo {
Bar1 bar1 = null;
Bar2 bar2 = null;

public Foo(Bar1 bar1, Bar2 bar2) {
this.bar1 = bar1;
this.bar2 = bar2;
}
}

对于对象,是否分配 null 应该无关紧要 - 它是隐式的,对吧?

我的老板坚持要为每个值分配 null。对于字符串,我理解分配 String str = "",因为那里有很大的不同,但我不太清楚为什么对象如此重要。

此外,执行以下操作是否是不好的做法:

public class Foo {
Bar1 bar1 = new Bar1();
Bar2 bar2 = new Bar2();

public Foo(Bar1 bar1, Bar2 bar2) {
this.bar1 = bar1;
this.bar2 = bar2;
}
}

最佳答案

无需显式将实例变量初始化为默认值。在 Java 和 C# 中,实例变量在创建实例时被赋予默认值。在构造函数主体运行之前,引用类型已经为 null。 int 已经是 0,等等。在第一个代码片段中,bar1 和 bar2 已经是 null。没有需要像第二个片段那样明确说明。

在第二个示例(第三个代码段)中,如果您所做的只是用构造函数中的另一个引用覆盖,则绝对没有必要将实例变量实例化为 new Bar1();

当构造函数尚未立即用提供的参数覆盖它时,默认值应该不是类型的默认值时,您可能希望将成员变量初始化为一个值。但是将它设置为默认值是多余的。但是,如果它可以帮助您的老板或团队的其他成员了解这些默认值是什么,那就这样吧。

关于c# - 设置和实例化类级变量的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com