欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 7.1中default关键字的新用法

程序员文章站 2022-04-28 09:39:28
default 关键字有两类用法 1. switch语句中指定默认标签 2. 默认值表达式 switch 语句 默认值表达式 default对应各种类型生成默认值列表如下: |类型|默认值| | | | |任何引用类型| | |数值类型|零| |bool| | |enum|表达式 生成的值,其中 是 ......

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中default关键字的新用法

打开高级生成设置,选择语言版本,选c# 7.1 及以上的版本,如下图
C# 7.1中default关键字的新用法

如果没有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# 编程指南)