C# 如何为返回类型为enum的方法返回null?

C# 如何为返回类型为enum的方法返回null?,c#,.net,enums,return-type,C#,.net,Enums,Return Type,我有一个枚举,它有一些值 public enum CompareOperators { GreaterThan, LessThan, GreaterThanEqualTo, LessThanEqualTo, EqualTo, NotEqualTo } 我有一个方法可以在各种条件下返回这个枚举 public static CompareOperators GetTypeForO

我有一个枚举,它有一些值

public enum CompareOperators
{            
        GreaterThan,
        LessThan,
        GreaterThanEqualTo,
        LessThanEqualTo,
        EqualTo,
        NotEqualTo
}
我有一个方法可以在各种条件下返回这个枚举

public static CompareOperators GetTypeForOperator(string strType)
{
      switch (strType)
      {
             case "=":
                return CompareOperators.EqualTo;
             case "!=":
                return CompareOperators.NotEqualTo;
             case ">":
                return CompareOperators.GreaterThan;
             case "<":
                return CompareOperators.LessThan;
             case ">=":
                return CompareOperators.GreaterThanEqualTo;
             case "<=":
                return CompareOperators.LessThanEqualTo;
     }
     return null;
}
switch
语句中没有满足任何条件时,返回
null
的最佳方法是什么

尽管我寻找了以下问题,但我的解决方案并没有得到答案


使您的方法返回一个可为空的
比较器

public static CompareOperators? GetTypeForOperator(string strType)
类型名称后的
使其可为空。另一个选项是使用此选项,这是相同的:

public static Nullable<CompareOperators> GetTypeForOperator(string strType)
(之后检查是否为空):

或:

或:


使您的方法返回一个可为空的
比较运算符

public static CompareOperators? GetTypeForOperator(string strType)
类型名称后的
使其可为空。另一个选项是使用此选项,这是相同的:

public static Nullable<CompareOperators> GetTypeForOperator(string strType)
(之后检查是否为空):

或:

或:


在这种情况下,您不应该返回null,而应该在
default
块中抛出异常

switch (strType)
{
  //...other cases

  default:
    throw new InvalidOperationException("Unrecognized comparison mode");
}

由于没有正确的参数,您无法继续,并且当程序遇到意外情况时,异常意味着这种情况。

在这种情况下,您不应返回null,而应在
默认值
块中抛出异常

switch (strType)
{
  //...other cases

  default:
    throw new InvalidOperationException("Unrecognized comparison mode");
}

由于没有正确的参数,您无法继续,当程序遇到意外情况时,会出现异常。

您可以使用未定义的比较来扩展枚举

public enum CompareOperators
{
    Undefined,
    GreaterThan,
然后将其作为默认值/回退值返回

return CompareOperators.Undefined;

可以使用未定义的比较扩展枚举

public enum CompareOperators
{
    Undefined,
    GreaterThan,
然后将其作为默认值/回退值返回

return CompareOperators.Undefined;

我会抛出一个异常而不是返回null。只是有点脱离上下文,但我会调用它GetTypeORDefaultForOperator并使用nullable类型。我会抛出一个异常而不是返回null。只是有点脱离上下文,但我会称之为GetTypeORDefaultForOperator,并使用nullable TypeFor,因为这正是来自linked的建议,不太可能有助于。。。(答案是重复的)。开关中的一个默认大小写可能会有所帮助。@AlexeiLevenkov:你说得对。我更新了答案,为用户的具体问题量身定制的答案。因为这是链接的确切建议,不太可能有助于操作。。。(答案是重复的)。开关中的一个默认大小写可能会有所帮助。@AlexeiLevenkov:你说得对。我将答案更新为针对用户特定问题的定制答案。