我是C#的新手,只是一个有关使用“ is”关键字的问题。 我看到我的一本教科书正在使用:
if (obj is Person && obj != null)
{
...
}
但是obj != null
是否多余?
答案 0 :(得分:0)
is关键字在运行时评估类型兼容性。它确定对象实例或表达式的结果是否可以转换为指定的类型。
if (obj is Person) {
// Do something if obj is a Person.
}
您还可以检查是否为空。
因此请勿执行空检查。
var obj = new object();
Console.WriteLine(obj is null);
在这种情况下,其他部分将执行。
object obj = null;
if(obj is CustomData)
{
Console.WriteLine("Match");
}
else
{
Console.Write("Null");
}
尽管有用,但我真的建议不要使用它,而应该使用as。 as关键字是一种防御性强制类型转换,这意味着将尝试强制类型转换,如果无法将对象强制类型转换为提供的类型,则返回null。
我建议您不要使用它的原因,因为它实际上会导致您执行2次强制转换-一种是检查对象是否属于该类型,另一种是实际捕获强制转换的值。
答案 1 :(得分:0)
我想在这里很简单地向您解释
Person obj = new Person();
if (obj is Person && obj!=null){};
Is
检查类型,它将返回布尔值true或false。是操作员永远不会抛出错误。是在引用元数据中找到找到对象的类型,然后它将返回true,否则返回false。
Person obj = null;
if (obj is Person){//return always false}
如果您尝试上述代码返回,则始终返回false。
obj!=null
!=是不等式运算符,如果其操作数不相等,则将返回true,否则返回false。