C# 4.0 为什么我们不能在C中的结构中定义数组
大家好,请帮助我理解为什么我们不能在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]
这对于实现来说是可以的,但我想理解为什么我们不能在结构中定义数组。可以,但必须在所有构造函数中初始化数组,因为结构要求将值分配给构造函数中的所有成员
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];但我在编译时遇到了这个错误。不能让结构中的实例字段初始值设定项我已经告诉过你,你需要在构造函数中而不是在声明中初始化数组。我非常感谢你的回答和评论,但我在我的问题中要求知道为什么我们不能这样做,否则我会使用类来代替。[很抱歉打扰你]。