C# 4.0 为什么我们不能在C中的结构中定义数组

C# 4.0 为什么我们不能在C中的结构中定义数组,c#-4.0,managed,C# 4.0,Managed,大家好,请帮助我理解为什么我们不能在c中的结构中定义数组 我尝试了另一个问题,但大多数问题都建议使用类而不是结构。 这对于实现来说是可以的,但我想理解为什么我们不能在结构中定义数组。可以,但必须在所有构造函数中初始化数组,因为结构要求将值分配给构造函数中的所有成员 public struct YourStruct { public char[] arr; public YourStruct(int size) { arr = new char[size]

大家好,请帮助我理解为什么我们不能在c中的结构中定义数组

我尝试了另一个问题,但大多数问题都建议使用类而不是结构。
这对于实现来说是可以的,但我想理解为什么我们不能在结构中定义数组。

可以,但必须在所有构造函数中初始化数组,因为结构要求将值分配给构造函数中的所有成员

 public struct YourStruct
 {
     public char[] arr; 

   public YourStruct(int size)
   {
      arr = new char[size];
   }
 }
正如其他人所提到的,如果创建的是对象数组而不是值类型,那么结构就不适合开始。
请看这里:

您可以,但必须在所有构造函数中初始化数组,因为结构要求您为构造函数中的所有成员赋值

 public struct YourStruct
 {
     public char[] arr; 

   public YourStruct(int size)
   {
      arr = new char[size];
   }
 }
正如其他人所提到的,如果创建的是对象数组而不是值类型,那么结构就不适合开始。
请看这里:

在结构中可以有一个数组,但在大多数情况下这是毫无意义的


数组是一个对象,因此结构将只包含数组的引用。如果创建一个数组并分配给引用,则该数组将在堆上创建。使用结构的通常原因是避免在堆上创建对象。

在结构中可以有一个数组,但在大多数情况下这是毫无意义的


数组是一个对象,因此结构将只包含数组的引用。如果创建一个数组并分配给引用,则该数组将在堆上创建。使用结构的通常原因是避免在堆上创建对象。

很抱歉,您能告诉我结构中的这行代码有什么问题吗?public long LongTest=new long[1000];它不应该是:public long[]LongTest=new long[1000];是的,这完全是公开的long[]longest=new long[1000];但我在编译时遇到了这个错误。不能让结构中的实例字段初始值设定项我已经告诉过你,你需要在构造函数中而不是在声明中初始化数组。我非常感谢你的回答和评论,但我在我的问题中要求知道为什么我们不能这样做,否则我会使用类来代替。[很抱歉打扰您]。很抱歉,但是,您能告诉我struct public long LongTest=new long[1000]中的这行代码有什么问题吗;它不应该是:public long[]LongTest=new long[1000];是的,这完全是公开的long[]longest=new long[1000];但我在编译时遇到了这个错误。不能让结构中的实例字段初始值设定项我已经告诉过你,你需要在构造函数中而不是在声明中初始化数组。我非常感谢你的回答和评论,但我在我的问题中要求知道为什么我们不能这样做,否则我会使用类来代替。[很抱歉打扰你]。