必须完全分配构造函数

时间:2014-04-13 20:35:44

标签: c# list struct

public struct S_Matrix
{
    public int size_C,size_R;
    public List<entries_R> entry_R;

    public S_Matrix(int c, int r)
    {
        this.size_C = c;
        this.size_R = r;
    }
}

我不知道如何修复它。当我向List添加默认值时,它修复了问题,但我不能简单地在struct中实例化一个值。

1 个答案:

答案 0 :(得分:1)

您的结构字段entry_R未初始化。在结构中,每个成员都必须在构造函数中初始化。如果您不想要这种行为,可能需要使用一个简单的类。

 public struct S_Matrix
 {
     public int size_C, size_R;
     public List<entries_R> entry_R;

     public S_Matrix(int c, int r, List<entries_R> en)
     {
         this.size_C = c;
         this.size_R = r;
         this.entry_R = en;
         // If you don't want a constructor parameter:
         // this.entry_R = null;
         // or:
         // this.entry_R = new List<entries_R>();
     }
 }

在大多数情况下,课程就是你想要的。只有在知道自己在做什么的情况下才应该使用结构。

 public class S_Matrix
 {
     public int size_C, size_R;
     public List<entries_R> entry_R;

     public S_Matrix(int c, int r)
     {
         this.size_C = c;
         this.size_R = r;
         // entry_R keeps being uninitialised
     }
 }