C# defult关键字

一、问题

今天写一个函数提示用defult,因为第一次用记录一下

        public static T GetConfig<T>(string strConfig)
        {
            try
            {
                return JsonConvert.DeserializeObject<T>(strConfig);

            }
            catch (Exception ex)
            {
                return default(T);//表示null

            }
        }

  

return null;时提示:无法将null类型转换为T,因为T可能是不可为null的值类型,请考虑用defult(T);

改为return defult(T);后正常

二、延伸

default 关键字有两类用法

  1. switch语句中指定默认标签
  2. 默认值表达式

默认值表达式

default对应各种类型生成默认值列表如下:

类型默认值
任何引用类型 null
数值类型
bool false
enum 表达式 (E)0 生成的值,其中 E 是枚举标识符。
struct 通过如下设置生成的值:将所有值类型的字段设置为其默认值,将所有引用类型的字段设置为null
可以为 null 的类型 HasValue 属性为 false 且 Value 属性未定义的实例。

例:

default(string) null
default(int) 0
default(int?) null

C#7.1可以直接使用defult关键字,不用带上类型;

例:

7.1之前:

string s = null;

7.1:

string s = defult;

  

如果想进一步了解,请参考:

https://www.cnblogs.com/AlienXu/p/9494676.html     作者:repeatedly

 

posted @ 2019-06-25 14:22  翻白眼的哈士奇  阅读(497)  评论(0编辑  收藏  举报