繁体   English   中英

C# 将枚举“名称”和枚举值传递给方法

[英]C# pass enum “name” and enum value to method

我在 C# atm 中做 Einstein-Riddle 并遇到了一个问题。 我正在尝试使用枚举来做到这一点。 我有一个名为 House 的结构。 在 House 中,有诸如 Nationality、Color、Animal 之类的枚举......我在 House 中创建了所有可能的解决方案,并希望删除带有提示的内容(以单独的方法)。

提示#1:英国人住在红房子里。 现在我必须将 Nationality 作为枚举传递,将 Nationality.British 作为值传递,将 Color 作为枚举传递,将 Color.Red 作为值传递。

这个怎么做? 我只想调用我的方法 -

CheckLine(Nationality.British, Color.Red);

但是要放入参数列表中的内容:

static void CheckLine(? )


这是我的结构和枚举

public enum Nationalitaet { Däne, Brite, Deutscher, Norweger, Schwede };
   public enum Farbe { rot, blau, grün, weiß, gelb };
   public enum Zigarette { Dunhill, Marlboro, PallMall, Rothmans, Wingfield };
   public enum Tier { Pferd, Fisch, Katze, Vogel, Hund };
   public enum Getraenk { Wasser, Kaffee, Milch, Tee, Bier };

   struct Haus
   {
       public int HausNr { get; set; }
       public Nationalitaet Nationalitaet { get; set; }
       public Farbe Farbe { get; set; }
       public Zigarette Zigarette { get; set; }
       public Tier Tier { get; set; }
       public Getraenk Getraenk { get; set; }
   } 

我在 CheckLine 中有一个包含所有解决方案(称为解决方案)的列表

if (solution[i].Nationalitaet == Nationalitaet.British && solution[i].Farbe == Farbe.Red)       
        solution.RemoveAt(i)```

正确的签名是:

static void CheckLine(Nationality nationality, Color color) { }

枚举类型(例如Nationality )可以像任何其他类型一样使用,类似于您使用intstring的方式。

参数的名称( nationalitycolor )当然可以自由选择,但一般来说最合适的名称与枚举类型本身的名称相匹配。

问题中没有足够的信息来判断它是否应该是static ,或者该方法是否应该返回void 这个答案只关注方法的输入参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM