C# 有关使用枚举作为参数和if/else条件的问题

C# 有关使用枚举作为参数和if/else条件的问题,c#,C#,是否可以使用C#中的枚举执行以下操作: 将枚举的选定值传递给方法(例如,如果一个枚举有诸如Red、Green、Orange之类的成员,我可以传递Colors.Red) 在上面接受枚举的方法的方法体中,我可以说if(enum==Colors.Red) 这个的语法是什么?我似乎总是在这方面停滞不前。是的,就像你在处理任何其他类型的问题时一样 public void MyMethod( Color color ) { if( color == Color.Red ) ... }

是否可以使用C#中的枚举执行以下操作:

  • 将枚举的选定值传递给方法(例如,如果一个枚举有诸如Red、Green、Orange之类的成员,我可以传递Colors.Red)

  • 在上面接受枚举的方法的方法体中,我可以说if(enum==Colors.Red)


这个的语法是什么?我似乎总是在这方面停滞不前。

是的,就像你在处理任何其他类型的问题时一样

public void MyMethod( Color color )
{
   if( color == Color.Red )
      ...
}

是的,就像你对任何其他类型

public void MyMethod( Color color )
{
   if( color == Color.Red )
      ...
}

是的,是的。语法与您的语法相同。

是和是。语法与您的相同。

您可以这样做:

public enum Colors{
   Red,
   Blue
}

...

public void DoSomething(Colors theColor){
   if(theColor == Colors.Red) // do something...
}

您可以这样做:

public enum Colors{
   Red,
   Blue
}

...

public void DoSomething(Colors theColor){
   if(theColor == Colors.Red) // do something...
}

是的,你可以。这是一个简单的例子:

public enum Colors
{
    Red,
    Orange,
    Green
}

...

public bool IsRed(Colors c)
{
    if (c == Colors.Red)
        return true;
    else
        return false;
}
您的函数调用如下所示:

bool test = IsRed(Colors.Green); //false

是的,你可以。这是一个简单的例子:

public enum Colors
{
    Red,
    Orange,
    Green
}

...

public bool IsRed(Colors c)
{
    if (c == Colors.Red)
        return true;
    else
        return false;
}
您的函数调用如下所示:

bool test = IsRed(Colors.Green); //false


+因为你的枚举是唯一遵循命名标准的枚举:事实上,当我看到有人给枚举取复数名时,当枚举没有“Flags”属性时,我总是畏缩。说得好(Fred)。这么简单,但我做对了!有点慢。对你来说+1,因为你的枚举是唯一一个遵循命名标准的枚举:事实上,当我看到有人给枚举取复数名时,当枚举没有“Flags”属性时,我总是畏缩。说得好(弗雷德)。这么简单,但我做对了!有点慢。为什么我这么讨厌那种风格的写作方法?我感觉到你了,它简直让你毛骨悚然
return c==Colors.Red
是最干净、最友好的方法。我通常不会写这样的方法,只是想让OP更清楚。为什么还要有IsRed方法呢?因为他要求一个接受枚举作为参数的方法,yeesh。这么讨厌:为什么我这么讨厌那种写作方式?我感觉到了你,它简直让你毛骨悚然
return c==Colors.Red
是最干净、最友好的方法。我通常不会写这样的方法,只是想让OP更清楚。为什么还要有IsRed方法呢?因为他要求一个接受枚举作为参数的方法,yeesh。如此之多的仇恨:x
Enum==Color.Red
就他所拥有的而言,这对他的要求是不正确的。您不能将枚举类与枚举值进行比较。实际上,我非常确定他在该上下文中输入的“Enum”是参数。。。类似于:void方法(颜色枚举)。这就是我从他的问题中得出的结论。有什么理由否决我的答案?我相信这是一个完全合理的答案。它是一个类这一事实并不重要,因为我相信OP足够聪明,知道如何避免这种情况。公平地说,你的答案更多的是一个评论,因为它没有回答他关于如何设置方法签名的问题。您对未发布的代码进行了假设。
Enum==Color.Red
按他的说法,这与他的要求不符。您不能将枚举类与枚举值进行比较。实际上,我非常确定他在该上下文中输入的“Enum”是参数。。。类似于:void方法(颜色枚举)。这就是我从他的问题中得出的结论。有什么理由否决我的答案?我相信这是一个完全合理的答案。它是一个类这一事实并不重要,因为我相信OP足够聪明,知道如何避免这种情况。公平地说,你的答案更多的是一个评论,因为它没有回答他关于如何设置方法签名的问题。您对未发布的代码进行了假设。