在 C# 中,default 关键字有多种用途,具体取决于它所用于的上下文。下面我会详细解释每种用法和其含义:
default
default 关键字可以用于获取类型的默认值。它的行为取决于所用类型的不同:
值类型(Value Types):对于值类型,default 返回该类型的零值。例如,对于整数类型 int,default(int) 返回 0;对于布尔类型 bool,default(bool) 返回 false;对于浮点类型 float,default(float) 返回 0.0f,依此类推。
int
default(int)
0
bool
default(bool)
false
float
default(float)
0.0f
int defaultInt = default; // 等价于 int defaultInt = default(int); bool defaultBool = default; // 等价于 bool defaultBool = default(bool);
引用类型(Reference Types):对于引用类型,default 返回 null。例如,对于字符串类型 string,default(string) 返回 null。
null
string
default(string)
string defaultString = default; // 等价于 string defaultString = default(string);
结构体类型(Struct Types):对于结构体类型,default 返回该结构体的每个字段或属性的默认值。
struct Point { public int X; public int Y; } Point defaultPoint = default; // 等价于 Point defaultPoint = default(Point); // defaultPoint.X 和 defaultPoint.Y 都会被设置为它们各自的默认值,即0
在泛型代码中,default 可以用于获取任意类型参数的默认值。这对于在泛型类、方法或委托中初始化变量或清除集合非常有用。
public T GetValue<T>() { return default(T); } int defaultInt = GetValue<int>(); // 返回0 string defaultString = GetValue<string>(); // 返回null
在 switch 语句中,default 用作默认分支,当没有任何 case 匹配时执行。它通常位于 switch 语句的最后一个分支。
switch
case
int number = 5; switch (number) { case 1: Console.WriteLine("One"); break; case 2: Console.WriteLine("Two"); break; default: Console.WriteLine("Other"); break; }
在上面的例子中,如果 number 不等于 1 或 2,则会执行 default 分支,输出 "Other"。
number
1
2
在泛型约束中,default 可以用作类型参数的默认值约束,表示该类型参数必须有一个无参构造函数,并且可以通过 new() 约束指定。
new()
public class MyClass<T> where T : new() { public T GetNewInstance() { return new T(); // 使用 new() 约束,调用类型 T 的无参构造函数 } }
default 关键字在 C# 中用途广泛,可以用于获取各种类型的默认值,作为 switch 语句的默认分支,以及在泛型中初始化类型参数等。理解 default 的正确用法可以帮助提高代码的清晰度和可读性,并且是 C# 编程中必备的基础知识之一。
原文链接:codingdict.net