default
一、switch语句
在switch语句中,如果没有任何case表达式与开关值匹配,则控制传递给跟在可选default标签后的语句。如果没有default标签,则控制传递到 switch 以外。
switch (key){
case 1:
Console.WriteLine("1");
break;
case 2:
Console.WriteLine("2");
break;
default:
Console.WriteLine("Sorry, no one matches!");
break;
}
二、泛型代码
之所以会用到default关键字,是因为需要在不知道泛型类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:
class TestDefault<T>
{
public T foo()
{
//这里是不确定T是值类型还是引用类型,int i = null (?)or class i = null (?)
T t = null;
return t;
}
}
如果我们用int型来绑定泛型参数,那么T就是int型,那么注释的那一行就变成了 int t = null;显然这是无意义的。为了解决这一问题,引入了default关键字:
就是为了给T这个未知类型的参数赋值一个默认值
class TestDefault<T>
{
public T foo()
{
return default(T);
}
}