带空检查的C#与运算符
我了解到.NET中的AND运算符带空检查的C#与运算符,c#,operators,C#,Operators,我了解到.NET中的AND运算符&&有条件地计算其第二个参数 检查null然后检查单个语句中的某些字段是否安全 例如,假设我们有一个类SomeClass,它有一个整型字段Id: class SomeClass { public Int32 Id { get; set; } } 然后,我们在某处接收到这种类型的对象,并尝试对其执行一些操作: public void SomeMethod(SomeClass obj) { if (obj != null) if (obj.I
&&
有条件地计算其第二个参数
检查null然后检查单个语句中的某些字段是否安全
例如,假设我们有一个类SomeClass,它有一个整型字段Id:
class SomeClass
{
public Int32 Id { get; set; }
}
然后,我们在某处接收到这种类型的对象,并尝试对其执行一些操作:
public void SomeMethod(SomeClass obj)
{
if (obj != null)
if (obj.Id == 1)
{
// do some actions
}
}
我们可以按如下方式重写它以减少代码量吗?空检查安全吗
public void SomeMethod(SomeClass obj)
{
if (obj != null && obj.Id == 1)
// do some actions
}
是的,这样做绝对安全
正如您在问题中所述,如果对象为null,则只计算第一个条件,因此第二个条件(将引发NullReferenceException)永远不会执行。这也被称为“短路”评估。是的,它将是安全的,&条件从“左到右”处理,如果第一个条件与您的情况不匹配,第二个条件将不会被评估 手术 x&y 对应于操作 x&y 但如果x为false,则不计算y,因为 无论y的值是多少,AND运算都是false。这是 被称为“短路”评估。 是的。。。这在C#和许多其他语言中是安全的。如果程序知道下面的检查不能使整个If语句变为真,那么甚至不需要查看它们 这种类型的评估称为。这里的术语是。使用and
(&&)
运算符,如果第一个条件失败,它将不会继续执行下一个条件。他们认为你所做的不仅是保存,而且是正确的做法
&&和| |运算符称为条件逻辑运算符。
它们也被称为“短路”逻辑运算符
是的,这是一个简单的逻辑,如果在多个AND语句中,有一个是false,则不需要继续计算它们,因为结果将是false,因此编译器在发现第一个false时停止计算