default 關鍵字有兩類用法 1. switch語句中指定預設標簽 2. 預設值表達式 switch 語句 預設值表達式 default對應各種類型生成預設值列表如下: |類型|預設值| | | | |任何引用類型| | |數值類型|零| |bool| | |enum|表達式 生成的值,其中 是 ...
default 關鍵字有兩類用法
- switch語句中指定預設標簽
- 預設值表達式
switch 語句
int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
預設值表達式
default對應各種類型生成預設值列表如下:
|類型|預設值|
|-|-|
|任何引用類型|null
|
|數值類型|零|
|bool|false
|
|enum|表達式 (E)0
生成的值,其中 E
是枚舉標識符。|
|struct|通過如下設置生成的值:將所有值類型的欄位設置為其預設值,將所有引用類型的欄位設置為null
。|
|可以為 null 的類型|HasValue 屬性為 false
且 Value 屬性未定義的實例。|
羅列一下上述列表中的常見類型對應的值
在C# 7.1 之前
default(string) // null
default(int) // 0
default(int?) // null
default(dynamic) // null
default(DateTime) // 0001/01/01 0:00:00
default(DateTime?) // null
預設文本和類型推理
C# 7.1 default的使用常見舉例
Visual Studio 2017 預設C#語言版本是7.0,需要自己設置7.1
Alt+Enter快捷鍵打開項目屬性,或者右鍵點擊項目,選擇屬性,之後選擇生成,點擊高級,如下圖
打開高級生成設置,選擇語言版本,選C# 7.1 及以上的版本,如下圖
如果沒有C# 7.1 及以上的版本可選,請下載.NET Framework 4.7.2,現在最新版本的是4.7.2,直接下載最新版本的,省事。然後重啟VS,就能看到7.1及以上的可選項。
變數初始值設定項
7.1之前:
var dstring = default(string);
var dint = default(int);
var dintNull = default(int?);
var d = default(dynamic);
var dt = default(DateTime);
var dt1 = default(DateTime?);
7.1:
string s = default;
int i = default;
DateTime? dt = default;
dynamic d = default;
變數賦值
7.1之前:
var s = "字元串";
s = default(string);
7.1:
var s = "字元串";
s = default;
聲明可選參數的預設值
7.1之前:
void Test(int a, string b = null)
{
}
7.1:
void Test(int a, string b = default)
{
}
為方法調用參數提供值
7.1之前:
static void Test(int a, string b)
{
}
static void Main(string[] args)
{
Test(0, null);
}
7.1:
static void Test(int a, string b)
{
}
static void Main(string[] args)
{
Test(default, default);
}
返回語句
7.1之前:
static string Test()
{
return null;
}
7.1:
static string Test()
{
return default;
}
expression bodied 成員中的表達式
7.1之前:
public string A => null;
7.1:
public string A => default;