繁体   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