|
|
1
4
对于一个
我的建议是:
|
|
|
2
1
这样做的原因是,结构(System.ValueType的实例)由clr特殊处理:它是用所有字段0(或默认值)初始化的。您甚至不需要创建一个-只需声明它。这就是需要默认构造函数的原因。 你可以用两种方式解决这个问题:
将结构更改为类可能会产生一些非常微妙的结果(在多线程环境中,内存使用情况和对象标识会更常见),而且对于未初始化的对象来说,这是非常微妙但很难调试nullreferenceexceptions的。 |
|
|
3
0
下面的表达式说明了无法定义默认构造函数的原因:
这里有3种选择
.NET对结构和类都执行相同的操作:字段和数组元素都用零填充。这也使得结构和类之间的行为更加一致,并且没有不安全的代码。它还允许.NET框架不专门化
这是structs.net要求的默认构造函数,它自己负责:将所有字节归零。 现在,要处理这个问题,您有几个选择:
|
|
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
|
|
nick2225 · 隐式调用复制构造函数? 3 年前 |
|
|
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
|
|
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
|
|
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |