default 关键字有两类用法express
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 属性未定义的实例。 |
罗列一下上述列表中的常见类型对应的值ide
在C# 7.1 以前ui
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快捷键打开项目属性,或者右键点击项目,选择属性,以后选择生成,点击高级,以下图
code
打开高级生成设置,选择语言版本,选C# 7.1 及以上的版本,以下图
blog
若是没有C# 7.1 及以上的版本可选,请下载.NET Framework 4.7.2,如今最新版本的是4.7.2,直接下载最新版本的,省事。而后重启VS,就能看到7.1及以上的可选项。字符串
7.1以前:get
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
string s = default; int i = default; DateTime? dt = default; dynamic d = default;
7.1以前:it
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; }
7.1以前:
public string A => null;
7.1:
public string A => default;