c# - 从类实例定义默认数组值

标签 c#

我有以下 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/

相关文章:

C#:是否应该在调用的方法中关闭/处置 Streams?

c# - 无法转换到 VisualState - "No applicable name scope"

c# - 将 TinyIoC 与 MonoTouch + Storyboard一起使用 - 在哪里构建?

c# - DELETE 后如何等待结果在 RavenDB 中更新

c# - Directory.SetAccessControl 设置不必要的权限

c# - 如何将随机与 CQRS+Event Sourcing 结合使用

c# - 解析 xml 并连接多个子节点的结果

c# - 通过 form2 中的命令锁定和解锁 form1 上的文本框

c# - 将图像转换为字节数组的最快方法

c# - 发送和接收文件socket编程