📜  c# assign if null - C# (1)

📅  最后修改于: 2023-12-03 14:59:39.792000             🧑  作者: Mango

C# Assign If Null

在 C# 中,有时候我们需要在初始化对象的时候判断是否为 null。如果是,则赋予一个默认值。这时候可以使用 Null-Coalescing 运算符 (??) 或条件运算符 (?:)。下面我们分别来看一下它们的使用方法。

Null-Coalescing 运算符 (??)

Null-Coalescing 运算符可以理解为:如果左侧表达式的值为 null,则返回右侧表达式的值,否则返回左侧表达式的值。可以使用它来对一个可能为 null 的对象进行赋值。

object obj1 = null;
object obj2 = obj1 ?? new object(); // 如果 obj1 为 null,则将新的 object 实例赋值给 obj2

string str1 = null;
string str2 = str1 ?? "default"; // 如果 str1 为 null,则将 "default" 字符串赋值给 str2

注:当左侧表达式的值不为 null 时,右侧表达式并不会被计算。

条件运算符 (?:)

条件运算符可以理解为:如果布尔表达式的值为 true,则返回表达式 1 的值,否则返回表达式 2 的值。可以使用它来对一个可能为 null 的对象进行赋值。

object obj1 = null;
object obj2 = obj1 != null ? obj1 : new object(); // 如果 obj1 为 null,则将新的 object 实例赋值给 obj2

string str1 = null;
string str2 = str1 != null ? str1 : "default"; // 如果 str1 为 null,则将 "default" 字符串赋值给 str2

与 Null-Coalescing 运算符不同的是,条件运算符的表达式 1 和表达式 2 都会被计算,因此在使用时需要注意。

以上两种方法都可以实现给一个可能为 null 的对象赋一个默认值的功能,具体使用时根据需要进行选择。

若需深入学习,请移步至官方文档 [1]。

参考资料

[1] Microsoft. Null Coalescing Operator (C# Reference). https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-coalescing-operator. 访问日期:2021/11/18.