[英]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.