包含列表的字典

时间:2014-07-15 10:35:05

标签: c# dictionary

以下代码:

public struct Value
{
    List<string> RFcode;
    int found;
    int expected;
    public int Found { get { return found; } }
    public int Expected { get { return expected; } }
    public List<string> Code { get { return RFcode; } }
    public Value(int f, int exp, string s)
    {
        this.found = f;
        this.expected = exp;
        RFcode.Add(s);
    }
}

无效。在VS调试中,我得到:

Error   1   Field 'BE_EOR.InvCyclic.Value.RFcode' must be fully assigned before control is returned to the caller

Error   2   Use of possibly unassigned field 'RFcode'   

1 个答案:

答案 0 :(得分:4)

请尝试这个:

List<string> RFcode = new List<string>();

为什么你得到这个错误的原因是,你没有创建一个列表,它将保存你想要的字符串。但是,您尝试在此列表中添加元素:

RFcode.Add(s);

这行代码List<string> RFcode;,它只定义了一个名为RFcode的变量,它将保持对字符串List的引用。它既没有创建列表也没有将它赋予此变量。

<强>更新

正如Christian Sauer已经指出并且Kensei已经向我们提醒过,你使用一个类而不是你使用的结构会更好:

public class Value
{
    public List<string> RFCode { get; set; }
    public int Found { get; set; }
    public int Expected { get; set; }

    public Value(string s, int found, int expected)
    {
        RFCode = new List<string> { s }; 
        Found = found;
        Expected = expected;
    }
}

然而,此时我不得不提出一个问题。为什么使用字符串列表,因为您只将字符串传递给构造函数?如果是这种情况,只传递一个字符串,我认为这不是一个好的设计,因为你没有使用你想要的最合适的类型。