C# 7.1中default關鍵字的新用法
阿新 • • 發佈:2020-07-19
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 的值型別 | 預設返回Nullable<T>,HasValue 屬性為 false |
羅列一下上述列表中的常見型別對應的值
在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;
********轉載:https://www.cnblogs.com/AlienXu/archive/2018/08/17/9494676.html