以下代码:
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'
答案 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;
}
}
然而,此时我不得不提出一个问题。为什么使用字符串列表,因为您只将字符串传递给构造函数?如果是这种情况,只传递一个字符串,我认为这不是一个好的设计,因为你没有使用你想要的最合适的类型。