如何在struct中初始化char数组

ssb*_*sbb 5 .net c# arrays struct initialization

如何在C#中初始化结构中的char数组我正在这样做

struct cell
{
    public char[] domain =new char[16];
    public int[] Peers;
    public int NumberOfPeers;
    public char assignValue;
}
Run Code Online (Sandbox Code Playgroud)

但它给出的错误是我们无法初始化结构体中的数组!任何人都可以说出正确的方法

Ode*_*ded 9

您可以使用构造函数

struct cell
{
    public cell(int charArraySize) : this()
    {
         domain = new char[arraySize];
    }

    public char[] domain;
    public int[] Peers;
    public int NumberOfPeers;
    public char assignValue;
}
Run Code Online (Sandbox Code Playgroud)

注意:即使使用结构,也不应该有公共字段,而是将它们封装在属性中.

能够改变结构的价值是一个更糟糕的问题 - 可变的结构是邪恶的.

  • 现在结构是合法的(从它编译的意义上说).但它仍然是一个**设计的**可变的结构.实际上,`int`和`char`类型的"简单"字段只能通过已创建的`cell`值的变异来使用.可变结构通常会导致错误(特别是对于那些知识不足以初始化结构的人,如原始海报).因此,对于可变结构的警告可能与此答案相关. (2认同)

Son*_*nül 1

您可以 constructor 为此使用 a 。看看MSDN。

struct cell
{
    public cell(int size)
    {
         domain = new char[size];
         this.Peers = Peers;
         this.NumberOfPeers = NumberOfPeers;
         this.assignValue = assignValue;
    }    
}
Run Code Online (Sandbox Code Playgroud)