default 關鍵字有兩類用法express
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 屬性未定義的實例。 |
羅列一下上述列表中的常見類型對應的值ide
在C# 7.1 以前ui
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快捷鍵打開項目屬性,或者右鍵點擊項目,選擇屬性,以後選擇生成,點擊高級,以下圖
code
打開高級生成設置,選擇語言版本,選C# 7.1 及以上的版本,以下圖
blog
若是沒有C# 7.1 及以上的版本可選,請下載.NET Framework 4.7.2,如今最新版本的是4.7.2,直接下載最新版本的,省事。而後重啓VS,就能看到7.1及以上的可選項。字符串
7.1以前:get
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
string s = default; int i = default; DateTime? dt = default; dynamic d = default;
7.1以前:it
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; }
7.1以前:
public string A => null;
7.1:
public string A => default;