enum weekday:byte
{
monday=1,
tuesday=2,
wednesday=3,
thursday=4,
friday=5,
satuday=6,
sunday=7
}
static void Main(string[] args)
{
weekday myweek=weekday.sunday;
byte value=(byte)myweek;
Console.WriteLine("myweek={0}",myweek);
Console.WriteLine("value={0}",value);
}
在以上代码中,weekday myweek=weekday.sunday表明已把weekday的sunday成员赋值给了myweek,且本身weekday是作为byte类型被声明的,为什么还要以byte value=(byte)myweek来强制转换呢?我运行后的结果是
myweek=sunday
value=7
有点似懂非懂的感觉。
请高手解释下为什么weekday myweek=weekday.sunday的结果是将sunday赋值给myweek,是枚举类型的特点,还是这代码的书写问题?还有,枚举类型的赋值方式就只有weekday myweek=weekday.sunday和byte value=(byte)mywee这两种形式的对吗?
{
monday=1,
tuesday=2,
wednesday=3,
thursday=4,
friday=5,
satuday=6,
sunday=7
}
static void Main(string[] args)
{
weekday myweek=weekday.sunday;
byte value=(byte)myweek;
Console.WriteLine("myweek={0}",myweek);
Console.WriteLine("value={0}",value);
}
在以上代码中,weekday myweek=weekday.sunday表明已把weekday的sunday成员赋值给了myweek,且本身weekday是作为byte类型被声明的,为什么还要以byte value=(byte)myweek来强制转换呢?我运行后的结果是
myweek=sunday
value=7
有点似懂非懂的感觉。
请高手解释下为什么weekday myweek=weekday.sunday的结果是将sunday赋值给myweek,是枚举类型的特点,还是这代码的书写问题?还有,枚举类型的赋值方式就只有weekday myweek=weekday.sunday和byte value=(byte)mywee这两种形式的对吗?
想javascript这种弱类型语言~我声明函数需要3个参数,你传2给我给也行~
我说第一个是字符串,你传整形给我也行~ 当然运行的时候出错再说~weekday myweek=weekday.sunday;
byte value=(byte)myweek;
声明了不同类型,所以需要转化~ 除非是父子关系
但weekday:byte 这语法不是继承~ 所以他们不是父子~是枚举的特点,就是声明一个值的取值范围,你只能在这个范围中挑选一个~
因为enum weekday:byte并不是继承语法。这个语法只是表明这个枚举类型背后用来存储值的类型是byte。所以上述情况还是需要强制转换一下的。