我从foreach循环中获取枚举的值。这些枚举值在某些循环中使用。所以我不能引入新的枚举值。代码如下。
enum Appraiser{A11,A12,A13,A14};
Appraiser selected_Appraiser = null;
foreach(var key in AppraiserStruct.appraisers.Keys)
if (selected_ComboBox.Text.ToLower() == key.ToString().ToLower())
{
selected_Appraiser = key;
break;
}
int min = dictionary[selected_Appraiser].min;
现在,可视化工作室使用未初始化的变量selected_Appraiser给出错误。
1(但是如果我selected_Appraiser设置为 null。这是说 null 不能分配给值类型。
2(如果我把它做成
Appraiser? selected_Appraiser = null;
那么就是说评估师?不能转换为评估师。谁能说出如何实现这一目标?
注意:我使用的是VS 2008 c#速成版。
可以使用default
运算符分配Enum
成员的默认值
Appraiser selected_Appraiser = default(Appraiser);
它将selected_Appraiser
设置为第一个Appraiser
成员,即A11
。根据 MSDN
枚举类型 E 的默认值是 表达式 (E(0,即使零没有相应的枚举 成员。
默认情况下,枚举成员的常量值的类型为int
,从零开始,按照定义顺序增加 1。您也可以从 1 开始计数,如果常量值对您无关紧要
enum Appraiser
{
A11 = 1,
A12,
A13,
A14
}
但这里更好的方法是添加到Appraiser
一些默认值,如None
并使用它。它有助于确保找到某些值的逻辑正常工作,而不是使用默认值
enum Appraiser {A11, A12, A13, A14, None};
Appraiser selected_Appraiser = Appraiser.None;
...
//value is found
if(selected_Appraiser != Appraiser.None)
{
}
求解无法将评估器转换为评估器? 要读取可为空的变量的值,请使用 value 属性。 例如selected_Appraiser.值 == 评估员.A11
Appraiser
枚举默认使用int
基础类型,并且具有从 0 到 3 的命名值:
enum Appraiser
{
A11, // 0
A12, // 1
A13, // 2
A14 // 3
};
您可以选择另一个未使用的int
值并强制转换为Appraiser
。它不必被命名。
Appraiser selected_Appraiser = (Appraiser)(-1);