zoukankan      html  css  js  c++  java
  • 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# 编程指南)

  • 相关阅读:
    关于NB-IoT,没有比这篇更通俗易懂的啦!
    使用SQL Server 2014 In-Memory 内存数据库时需要注意的地方
    SQL Server Profiler:使用方法和指标说明
    SQL Server 维护计划实现数据库备份(策略实战)
    SQL Server 连接问题圣经-命名管道
    如何查看 exec sp_execute 10 XXX, XXXX的RPC事件 内容
    Mac下Qt连接MySQL 驱动问题
    {Nodejs} 错误 HPE_INVALID_CONSTANT 解决
    {Nodejs} request URL 中文乱码
    Centos 5.5 安装 Git 以及配置
  • 原文地址:https://www.cnblogs.com/AlienXu/p/9494676.html
Copyright © 2011-2022 走看看