C# 如何为枚举设置一些伪值?

C# 如何为枚举设置一些伪值?,c#,visual-studio,enums,C#,Visual Studio,Enums,我从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()) {

我从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;
现在使用visual studio将错误作为未初始化的选定变量\u评估器

1但如果我将所选评估人设置为空。这意味着不能将null赋值给值类型

2如果我能做到

Appraiser? selected_Appraiser = null;
那么它是说评估师?无法转换为评估人。有人能说怎么做到这一点吗

注意:我使用的是VS 2008 c express edition。

您可以使用运算符指定枚举成员的默认值

所选评估人\u评估人=默认评估人; 它会将所选的评估师设置为第一个评估师成员,即A11。

枚举类型E的默认值是由 表达式E0,即使零没有相应的枚举 成员

默认情况下,枚举成员的常量值为int类型,从零开始,按照定义顺序增加一。如果常量值对您不重要,您也可以从1开始计算

枚举估价师 { A11=1, A12, A13, A14 } 但更好的方法是向评估师添加一些默认值,比如“无”,然后使用它。它有助于确保找到某个值的逻辑正常工作,而不是使用默认值

枚举估价师{A11,A12,A13,A14,无}; 所选估价师\估价师=估价师。无; ... //找到值 如果选择了评估师!=估价员,没有 { } 默认情况下,评估器枚举使用int作为基础类型,并具有0到3之间的命名值:

enum Appraiser
{
    A11, // 0
    A12, // 1
    A13, // 2
    A14  // 3
};
您可以选择另一个未使用的int值,并将其强制转换为assessment。它不需要命名

Appraiser selected_Appraiser = (Appraiser)(-1);
要解决无法转换评估师的问题?进入估价师:要读取可为空变量的值,请使用value属性。例如,selected_evalumer.Value==evalumer.A11

默认值在较新的C版本中也有效。@UweKeim默认值为C 7.1功能,默认值从C 2或C 3存在,IIRC。我不认为VS2008C速成版支持最新的功能