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