[C#]C#與Java 的enum 不同
在上一篇文章 [讀書心得]深入淺出物件導向分析與設計-良好程式設計基石 OOAD Code設計範例介紹-1 中提到的,     
所說到的範例,     
像是書中提到的 wood 所使用的 enum 下還有能夠加上程式     
讓我蠻驚訝的,該書提到的範例程式碼如下     
  INDIAN_ROSEWOOD, BRAZILIAN_ROSEWOOD, MAHOGANY, MAPLE,
  COCOBOLO, CEDAR, ADIRONDACK, ALDER, SITKA;
  public String toString() {
    switch(this) {
      case INDIAN_ROSEWOOD:    return "Indian Rosewood";
      case BRAZILIAN_ROSEWOOD: return "Brazilian Rosewood";
      case MAHOGANY:           return "Mahogany";
      case MAPLE:              return "Maple";
      case COCOBOLO:           return "Cocobolo";
      case CEDAR:              return "Cedar";
      case ADIRONDACK:         return "Adirondack";
      case ALDER:              return "Alder";
      case SITKA:              return "Sitka";
      default:  return "unspecified";
    }
  }
}可以在 enum 內,再加上方法等... 
  
這樣的話就能夠變成enum的選項是簡寫,而執行 toString 的時候就是比較完整的名稱之類的, 
  
當然這段code,貼到我目前使用的 VS2005 (.NET 2.0) 一定是無法執行的, 
  
而目前在C#若要這樣做的話,一般而言都可能是類似數字的方式 
  
範例取用 MSDN 詳細範例說明網址 
  
enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
而再看到 Java 這邊的 enum 能夠做到這樣,真的讓我蠻驚訝的, 
  
後來就上網找一找,發現了這篇文章 Jon Skeet: Coding Blog  Enhanced enums in C# 這位MVP所寫的這篇, 
  
大概從該文章中瞭解(Dotjum沒詳細看完,若有錯誤請糾正), 
  
目前C#是沒有支援,但在Java1.5版本已經能夠支援這項功能。 
  
在enum在包含方法,而能更做到的就會像是他文章中程式碼中,能夠在 enum 中加上方法, 
  
還蠻希望C#也能夠提供這樣的方法。