C#运算符?、??、?:各种问号的用法和说明
在C#中,有三种问号运算符:?
、??
和?:
。它们可以帮助我们简化代码,并更好地处理可能会出现空值的情况。让我们逐个来了解它们。
?
运算符
?
运算符用于处理可能为null的对象。它的语法是:
object? nullableObject = null;
var x = nullableObject?.SomeMethod();
这里,nullableObject
对象可能为null,那么我们就不能直接调用它的方法。为了避免出现异常,我们在调用前加上?
运算符。如果nullableObject
非null,SomeMethod()
会被正常地调用;否则,x
将会为null。
下面这个示例演示了在链式表达式中使用?
运算符:
class Car
{
public string Make { get; set; }
public Engine? Engine { get; set; }
}
class Engine
{
public string Model { get; set; }
public int Horsepower { get; set; }
}
假设我们有一个Car
对象,并希望从Engine
中获取 horsepower。首先,我们需要检查Engine
是否为null,如果是则返回null值;否则,我们可以访问其属性Horsepower
:
var car = new Car
{
Make = "Ford",
Engine = new Engine { Model = "V8", Horsepower = 450 }
};
var horsepower = car?.Engine?.Horsepower; // 450
此处计算了?
运算符的2个非空引用的复合。在 ??
运算符的周围,复合使用了这些运算符。
??
运算符
??
运算符用于在变量为null时给它一个默认值。它的语法是:
string x = nullableString ?? "default";
这里,x
变量为nullableString
的值,如果其为null,则使用默认值"default"
。如果nullableString
非null,则x
将等于nullableString
。
下面这个示例演示了如何使用??
运算符在方法参数中设置默认值:
public static int Add(int x, int? y = null)
{
return x + (y ?? 0); // if y is null, use 0
}
我们定义一个静态方法Add
,并将y
定义为可空类型。如果y
的值为null,则使用??
运算符将它的值替换为0。否则,我们将把y
的实际值加到x
上。
?:
运算符
?:
运算符也被称为“条件运算符”或“三元运算符”,它简化了简单的条件语句的写法。它的语法是:
int x = (condition) ? trueValue : falseValue;
这里,如果condition
为true
,则返回trueValue
;如果condition
为false
,则返回falseValue
。
下面这个示例演示了如何使用条件运算符:
int num = -1;
string result = (num > 0) ? "positive" : "non-positive"; // "non-positive"
我们定义了一个变量num
,如果它是正数,则result
为positive
,否则为non-positive
。
至此,三个问号运算符的用法都已经简单介绍了一遍。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 运算符 ?、??、?: 各种问号的用法和说明 - Python技术站