[C#]C#與Java 的enum 不同

[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#也能夠提供這樣的方法。