C# 7.1中default關鍵字的新用法

default 關鍵字有兩類用法express

  1. switch語句中指定默認標籤
  2. 默認值表達式

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 屬性未定義的實例。

羅列一下上述列表中的常見類型對應的值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;
        }

expression bodied 成員中的表達式

7.1以前:

public string A => null;

7.1:

public string A => default;

參考:默認值表達式(C# 編程指南)

相關文章
相關標籤/搜索