我有以下 C# 类
public class smallclass
{
public Vector3 var1 = new Vector3(1,2,3);
public string var2 = "defaultval";
public smallclass()
{
var1 = new Vector3(11,22,33);
var2 = "constructor";
}
}
我还有另一个c#类
public class bigclass
{
public smallclass[] smallclasses;
}
然后在我的程序的其他地方,我增加了 smallclasses 的大小
smallclasses = new smallclass[3];
但我意识到这三个元素是空的...... 这是正确的行为吗?
请允许我澄清一下,每当我调整 smallclasses 数组的大小时,它的元素都会自动“构造”...我只是不知道这样的事情是否可以完成。
与我预期的不同,设置默认值无效。在我调整 smallclasses 数组的大小后,元素立即为空...
感谢任何建议。
谢谢。
最佳答案
smallclasses = new smallclass[3];
没有调整数组的大小。它正在创建一个新数组。
您的数组声明 (public smallclass[] smallclasses;
) 在类 bigclass
中创建了一个字段,其初始值为 null
。语句 smallclasses = new smallclass[3];
创建一个新数组对象并将对该对象的引用分配给字段 smallclasses
。
每当您创建一个引用类型(即类)的新数组时,该数组的所有元素都是空的。这是预期的行为。请参阅 C# 规范的第 1.8 节,其中部分说明:“new 运算符自动将数组的元素初始化为其默认值,例如,对于所有数字类型为零,对于所有引用类型为 null。”
关于c# - 从类实例定义默认数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919094/