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


default 關鍵字有兩類用法

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

羅列一下上述列表中的常見類型對應的值

在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;

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM