我有下面的代码:请告诉我什么是C#.net使用“默认”关键字的
我有一个枚举:
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
,并使用该枚举是这样:开始
HardwareInterfaceType type = default(HardwareInterfaceType);
请告诉我什么是关键字“默认”在这里做?它有什么用处?
我有下面的代码:请告诉我什么是C#.net使用“默认”关键字的
我有一个枚举:
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
,并使用该枚举是这样:开始
HardwareInterfaceType type = default(HardwareInterfaceType);
请告诉我什么是关键字“默认”在这里做?它有什么用处?
我相信默认是0,所以你将有一个无效的HardwareInterfaceType生成。我个人不喜欢这种编码的枚举。国际海事组织更清楚定义一个枚举值“未定义”或“无”,然后初始化该变量。
带枚举的“问题”之一是它们可以被初始化为枚举中不存在的值。原来的程序员可能会认为如果Enum定义中使用“default”关键字,enum将被初始化为一些有效值。不正确,而IMO完全不能很好地使用“默认”关键字。
var foobar = default(HardwareInterfaceType);
Console.WriteLine(Enum.IsDefined(typeof(HardwareInterfaceType), foobar)); //returns false
Console.WriteLine(foobar); //returns 0
默认关键字主要用于编写通用代码时。
在泛型类和方法中,出现的一个问题是如果不知道T是引用类型还是值类型,如何将默认值分配给参数化类型T,如果T是值类型,无论它是数值还是结构。
在你的情况下,分配0
static void Main(string[] args)
{
HardwareInterfaceType type = default(HardwareInterfaceType);
Console.WriteLine(type.ToString());
type = HardwareInterfaceType.Gpib;
Console.WriteLine(type.ToString());
Console.ReadLine();
}
public enum HardwareInterfaceType
{
Gpib = 1,
Vxi = 2,
GpibVxi = 3,
}
//output
0
Gpib
在我的情况是什么分配? – 2010-05-25 11:32:59
在你的情况下,它将“未定义”值赋值为0. – 2010-05-25 11:38:38
default
将一种语言类型提供默认值 - 在数值的情况下,推而广之,枚举为零。对于参考类型,默认值为null
。
它更常用于类型未知的泛型。
我认为,当你没有创建任何类对象的新实例的默认键词是用来说:
一种方式是这样的
HardwareInterfaceType type = new HardwareInterfaceType();
和第二路是这样也
HardwareInterfaceType type = default(HardwareInterfaceType);
上述代码将创建hardwareinterfacetype的对象,但它不会创建e任何新的 内存。
+1 – Christian 2010-05-25 11:37:33