簡體   English   中英

C#中枚舉的靜態構造方法

[英]Static construction methods for enums in C#

我正在嘗試向C#枚舉添加靜態方法。 通過添加一個static class ,我可以創建一個“ getter”方法,該方法將枚舉值轉換為一個字節。 但是,我似乎無法制作一個“構造”方法,該方法將字節並轉換為枚舉。 在Java中,我將使用以下代碼而不使用單獨的靜態類。

枚舉代​​碼:

public enum PoseLocation {

  UP,
  DOWN,
  LEFT,
  RIGHT,
  UP_LEFT,
  UP_RIGHT,
  DOWN_LEFT,
  DOWN_RIGHT

}

public static class PoseLocationMethods {

  public static byte toByte (this PoseLocation location) {
    return (byte)location;
  }

  public static PoseLocation fromByte (byte poseByte) {
    return (PoseLocation)poseByte;
  }

}

方法調用:

byte poseByte = PoseLocation.UP.toByte (); //OK
PoseLocation fromByte = PoseLocation.fromByte (poseByte); //this does not work

您似乎認為fromByte也是一種擴展方法...

仔細看一下聲明:

公共靜態PoseLocation fromByte(字節poseByte)

你看到這個詞this嗎? 不,所以這不是擴展方法。 就像其他方法一樣,它只是一個普通的靜態方法。 要調用靜態方法,您需要將聲明它的類放在前面。 在這種情況下, fromBytePoseLocationMethods聲明,因此您應該執行以下操作:

PoselocationMethods.fromByte(1);

但是,我認為fromByte屬於PoseLocationMethods類。 您可能要為byte編寫擴展方法:

public static PoseLocation ToPoseLocation(this byte poseByte) {
    return (Poselocation)poseByte;
}

或者,擺脫這些ToFrom方法。 我認為使用演員表已經足夠清楚了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM