第一种,用于switch语句中
switch (num)
{
case 1:
Console.WriteLine("1");
break;
case 2:
Console.WriteLine("2");
break;
default:
Console.WriteLine("no match");
break;
}
作用是:不满足所有case的情况下,会进default, 若不写则直接跳出switch
重点是第二种,即各种类型的默认值
如下表:
类型 | 默认值 |
---|---|
任何引用类型 |
|
数值类型 | 零 |
bool | false |
enum | 表达式 |
struct | 通过如下设置生成的值:将所有值类型的字段设置为其默认值,将所有引用类型的字段设置为 |
可以为 null 的类型 | HasValue 属性为 |
1.主要是用于泛型中
public T GetData<T>()
{
return default;
}
2.default 在C#7.1中得到了改进,不再需要default(T)了:
变量赋值
C#7.0
var s = "字符串";
s = default(string);
C#7.1
var s = "字符串";
s = default;
初始化赋值
C#7.0
var dstring = default(string);
var dint = default(int);
var dintNull = default(int?);
var d = default(dynamic);
var dt = default(DateTime);
var dt1 = default(DateTime?);
C#7.1
string s = default;
int i = default;
DateTime? dt = default;
dynamic d = default;
可选参数
C#7.0
void Test(int a, string b = default(string))
{
}
C#7.1
void Test(int a, string b = default)
{
}
在VS中选择了C#7.1版本后 ,会提示优化代码,如下图: