using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace EnumTest1
{
enum Days
{
Monday,
Tuesday,
Wednesday
}
class Program
{
static void Main(string[] args)
{
EnumClass a = new EnumClass(); //只声明,未赋值,输出:Monday
Console.WriteLine(a.em.ToString());
//将a.em显式类型转换,输出:0
Console.WriteLine(((Int32)a.em).ToString()); //显式赋值0,输出:Monday
a.em = 0;
Console.WriteLine(a.em.ToString()); //下面这条语句会报错:Cannot implicitly convert type 'int' to 'EnumTest1.Days'
//a.em = 1; //显示转换类型后就行了,就像下面,输出:Wednesday
a.em = (Days)2;
Console.WriteLine(a.em.ToString()); //下面这条语句输出:5
a.em = (Days)5;
Console.WriteLine(a.em.ToString());
Console.ReadKey();
}
} class EnumClass
{
public Days em { get; set; }
}
}
今天偶然发现enum类型还真不一般,上面这些现象,还请高手讲一讲。
解决方案 »
- 我调用文本控件的文字作为sql语句,出错,哪位高手指导一下,万分感谢呀。
- Web开发,如何让多个按钮都链接到同一段函数
- 将xml文件读到treeview控件中形成树形菜单,怎样实现拖动菜单节点上下移动?
- dataGridView单元格提示问题
- 难死我了,泛型类的数据绑定问题
- 引用自定义命名控件无效的奇怪问题???
- 请注释下一下代码
- invalid URI The hostname could not be parsed
- 数据库提交问题,急呀,在线等候
- AD域在调用设置密码SetPassword时报"调用的对象发生异常" RPC服务器不可用
- asp.net 提交一个页面会不会因为网络中断而影响更新表?
- 这个代码可以将一个字段所有值载入一个DropDownList里,那如何将多个字段一一对应载入多个DropDownList里?
enum Days:int这样?貌似结果没有任何变化,a.em = 1同样报错
Enum.GetName(
Type enumType,
Object value
)
// 隐式声明
enum Days
{
Monday,
Tuesday,
Wednesday,
Sunday
}// 显示声明
enum Days
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Sunday = 7
}// 隐式声明中 Sunday 的值对应的是 4
// 利用 Enum.IsDefined 方法可以判断某个值在枚举中是否被定义// 完整的例子
enum Days
{
Unknow = 0,
Monday,
Tuesday,
Wednesday,
Friday = 5,
Sunday = 7
}private void button1_Click(object sender, RoutedEventArgs e)
{
Days d = Days.Monday; for (int i = 0; i < 8; i++)
{
if (Enum.IsDefined(d.GetType(), i))
{
Console.WriteLine(Enum.GetName(d.GetType(), i));
}
else Console.WriteLine("{0}, undefined!", i);
}
}/* 输出
Unknow
Monday
Tuesday
Wednesday
4, undefined!
Friday
6, undefined!
Sunday
*/
我看了看IL代码,因为在下水平比较低,看得不是很明白,发现在(Days)2这种地方貌似发生了装箱操作。现在就更迷糊了,在枚举值类型里形如Wednesday=1,那个Wednesday是一个占位符?或者可以看成一种映射?还请前辈们指教