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飞快键展开项目性质,或然右键点击项目,采取属性,之后选拔生成,点击高档,如下图
图片 1

开发高等生成设置,选用语言版本,选C# 7.1 及以上的本子,如下图
图片 2

若是未有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#
编制程序指南)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website