【发布时间】:2011-04-11 18:39:43
【问题描述】:
在下面的代码示例中,我定义了一个枚举并将其基础类型指定为字节。然后我尝试分配一个字节值并打开枚举的值,但出现错误:Cannot implicitly convert type 'CmdlnFlags' to 'byte'. An explicit conversion exists (are you missing a cast?)
代码:
using System;
public enum CmdlnFlags: byte {
ValA = (byte)'a',
ValB = (byte)'b',
}
public class Sample {
public static void Main() {
byte switchByte = CmdlnFlags.ValB;
switch (switchByte) {
case CmdlnFlags.ValA: Console.WriteLine('A'); break;
case CmdlnFlags.ValB: Console.WriteLine('B'); break;
}
Console.ReadKey();
}
}
很容易修复,只需转换为字节,但如果为枚举指定了基础类型,为什么我必须转换?如果必须强制转换,那么指定基础类型有什么意义?
如果我施放,一切正常。示例:
byte switchByte = (byte)CmdlnFlags.ValB;
switch (switchByte) {
case (byte)CmdlnFlags.ValA: Console.WriteLine('A'); break;
case (byte)CmdlnFlags.ValB: Console.WriteLine('B'); break;
}
【问题讨论】: