[英]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
嗎? 不,所以這不是擴展方法。 就像其他方法一樣,它只是一個普通的靜態方法。 要調用靜態方法,您需要將聲明它的類放在前面。 在這種情況下, fromByte
在PoseLocationMethods
聲明,因此您應該執行以下操作:
PoselocationMethods.fromByte(1);
但是,我認為fromByte
屬於PoseLocationMethods
類。 您可能要為byte
編寫擴展方法:
public static PoseLocation ToPoseLocation(this byte poseByte) {
return (Poselocation)poseByte;
}
或者,擺脫這些To
和From
方法。 我認為使用演員表已經足夠清楚了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.