建网站带支付链接,今晚现场直播,鞍山58同城找工作 招聘,门户网站的建设费用总目录 前言
在C#中#xff0c;default 关键字用于表示类型默认值。它可以根据上下文推断出适用的类型#xff0c;并返回该类型的默认值。随着C#版本的发展#xff0c;default 的用法也变得更加丰富和灵活。本文将详细介绍 default 在不同场景下的使用方法及其最佳实践。 一…总目录 前言
在C#中default 关键字用于表示类型默认值。它可以根据上下文推断出适用的类型并返回该类型的默认值。随着C#版本的发展default 的用法也变得更加丰富和灵活。本文将详细介绍 default 在不同场景下的使用方法及其最佳实践。 一、default 获取类型的默认值
1. 语法与作用
可以使用 default 关键字来获取任意类型的默认值。
值类型如 int, double, struct 等返回 类型的零值或空值。
int 默认为 0bool 默认为 false结构体的所有字段都被初始化为其默认值
引用类型如 string, class, interface 等默认为 null
这在初始化变量或者为方法参数提供默认值时非常有用。
2. 示例代码 internal class Program{public static void Main(){// 获取 int 类型的默认值int intDefault default(int);Console.WriteLine($int 默认值: {intDefault}); //int 默认值: 0// 获取 bool 类型的默认值bool boolDefault default(bool);Console.WriteLine($bool 默认值: {boolDefault}); //bool 默认值: False// 获取自定义类的默认值MyClass classDefault default(MyClass);Console.WriteLine($MyClass 默认值: {classDefault}); // MyClass 默认值:// C# 7.1 及以后版本可省略类型int intValue default; // intValue 0bool boolValue default; // boolValue falsestring stringValue default; // stringValue nullConsole.WriteLine($string 默认值: {stringValue}); //string 默认值:}}class MyClass { }代码解释
default(int) 返回 int 类型的默认值 0。default(bool) 返回 bool 类型的默认值 false。default(MyClass) 返回自定义类 MyClass 的默认值 null。在 C# 7.1 及以后版本中可以省略类型直接使用 default 来初始化变量如 string stringValue default;。
二、default 在泛型中的应用
1. 语法与作用
在泛型方法或类中当需要给泛型类型的变量赋默认值时default 关键字非常有用。因为在泛型代码中无法提前知道具体的类型使用 default 可以确保无论泛型类型是值类型还是引用类型都能正确地赋予默认值。
2. 示例代码
using System;class GenericExampleT
{public T GetDefaultValue(){return default(T);}
}class Program
{static void Main(){GenericExampleint intExample new GenericExampleint();int intResult intExample.GetDefaultValue();Console.WriteLine($int 泛型默认值: {intResult}); // 返回 0GenericExamplestring stringExample new GenericExamplestring();string stringResult stringExample.GetDefaultValue();Console.WriteLine($string 泛型默认值: {stringResult}); // 返回 null}
}从 C# 7.1 开始可以直接使用 default 而不带括号来简化语法
class GenericExampleT
{public T GetDefaultValue(){return default;}
}三、default 在 switch 语句中的使用
1. 语法与作用
在 switch 语句中default 标签用于处理所有未被其他 case 标签匹配的情况。它类似于 if-else 语句中的 else 分支确保 switch 语句能够处理所有可能的输入。
2. 示例代码
using System;class Program
{static void Main(){int number 3;switch (number){case 1:Console.WriteLine(数字是 1);break;case 2:Console.WriteLine(数字是 2);break;default:Console.WriteLine(数字不是 1 也不是 2);break;}}
}四、default 其他应用
1. 可空类型
对于可空类型例如 int?default 返回的是 null 而不是基础类型的默认值。
int? nullableInt default; // nullableInt null
DateTime? nullableDate default; // nullableDate null2. 初始化集合
在初始化集合如数组、列表等时default 可以用来填充元素的默认值。
int[] numbers new int[5] { default, default, default, default, default }; // 全部元素为 0
Liststring strings new Liststring(new string[3] { default, default, default }); // 全部元素为 null3. 异步编程
在异步方法中default 可以用来处理任务完成前的状态。例如你可以用它来表示尚未开始的任务或取消的任务。
Taskint task default(Taskint);
//Taskint task default;
if (task null)
{Console.WriteLine(Task has not been initialized.);
}五、default 运算符与 default 文本
1. default 运算符
default 运算符的实参必须是类型或类型形参的名称如以下示例所示
Console.WriteLine(default(int)); // output: 0
Console.WriteLine(default(object) is null); // output: Truevoid DisplayDefaultOfT()
{var val default(T);Console.WriteLine($Default value of {typeof(T)} is {(val null ? null : val.ToString())}.);
}DisplayDefaultOfint?();
DisplayDefaultOfSystem.Numerics.Complex();
DisplayDefaultOfSystem.Collections.Generic.Listint();
// Output:
// Default value of System.Nullable1[System.Int32] is null.
// Default value of System.Numerics.Complex is (0, 0).
// Default value of System.Collections.Generic.List1[System.Int32] is null.2. default 文本
当编译器可以推断表达式类型时可以使用 default 文本生成类型的默认值。 default 文本表达式生成与 default(T) 表达式其中T 是推断的类型相同的值。 可以在以下任一情况下使用 default 文本
对变量进行赋值或初始化时。在声明可选方法参数的默认值时。在方法调用中提供参数值时。在 return 语句中或作为表达式主体成员中的表达式时。
T[] InitializeArrayT(int length, T initialValue default)
{if (length 0){throw new ArgumentOutOfRangeException(nameof(length), Array length must be nonnegative.);}var array new T[length];for (var i 0; i length; i){array[i] initialValue;}return array;
}void DisplayT(T[] values) Console.WriteLine($[ {string.Join(, , values)} ]);Display(InitializeArrayint(3)); // output: [ 0, 0, 0 ]
Display(InitializeArraybool(4, default)); // output: [ False, False, False, False ]System.Numerics.Complex fillValue default;
Display(InitializeArray(3, fillValue)); // output: [ (0, 0), (0, 0), (0, 0) ]结语
回到目录页C#/.NET 知识汇总 希望以上内容可以帮助到大家如文中有不对之处还请批评指正。 参考资料 默认值表达式 - 生成默认值