2017-05-30 50 views
0

例如讓我有這樣的事情。在交換機中調用默認情況c#

public enum CarEnum { BWM, LadaKalina }; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      var carEnum = CarEnum.LadaKalina; 
      GetMessage(carEnum); 
     } 
     public static void GetMessage(CarEnum carEnum) 
     { 
      switch (carEnum) 
      { 
       case CarEnum.BWM: 
        Console.WriteLine("BWM"); 
        break; 
       case CarEnum.LadaKalina: 
        Console.WriteLine("LadaKalina"); 
        break; 
       default: 
        Console.WriteLine("default"); 
        break; 
      } 
     } 
    } 

我想在函數GetMessage中調用默認情況。什麼比爭論更好?

+2

不知道我理解。要達到默認值,您只需傳遞BWM和LadaKalina以外的其他值。 –

+1

確實GetMessage((CarEnum)-1);'數? –

+2

將一個'None = 0'成員添加到枚舉中,並通過該成員。 –

回答

6

我會提供可用作默認值/未知值的枚舉值:

public enum CarEnum { Unknown, BWM, LadaKalina }; 

GetMessage(CarEnum.Unknown); 
+0

但如果Unknown在枚舉中已存在並且出於其他原因使用?那麼只有魔術數字? – A191919

+1

@ A191919然後...也許'可空''又名'CarEnum?'? –

+0

或者只是選擇一個未使用的名稱。 *無*代碼易觀規則推薦。 –

1

你可以做這樣的事情:

GetMessage((CarEnum)-1); 

編輯:

此基礎上對對方的回答馬克Gravell的評論我測試過,你可以使用

 CarEnum? car = null; 

     switch (car) 
     { 
      case CarEnum.BWM: 
       break; 
      default: 
       Console.WriteLine("Default"); 
       break; 
     } 
4

這是一個常見的約定添加None枚舉值,表示沒有在枚舉值的:

public enum CarEnum { None, BWM, LadaKalina }; 

而且使用它像:

GetMessage(CarEnum.None);