gpt4 book ai didi

c# - is-operator 的最佳用法是什么

转载 作者:可可西里 更新时间:2023-11-01 07:46:58 25 4
gpt4 key购买 nike

is 运算符的好的用法是什么?

下面的转换构造不是推荐的方法,几乎​​所有文档都更喜欢带有 null 检查的 as-operator。

if(obj is SomeClass)
{
SomeClass some = (SomeClass)obj;
....
}

当然这是一个(非常小的)性能提升,有些甚至提到了胎面安全性。是的,这是真的......

那么,为什么我们要有 is 运算符?
“带有空检查的运算符(operator)”在哪里不起作用或不是可行的方法?
使用 is 运算符限制声明的范围是否有优势?

最佳答案

as 不适用于不可为 null 的 struct:

object o = 123;
int i = o as int; // compile error

但是:

object o = 123;
if(o is int) {
int i = (int)o;
//...
}

当然,从2.0开始你也可以使用:

int? i = o as int?;

并像往常一样测试 null

还有您不关心对象的值的情况...您只需要知道它是什么:

if(obj is Something)
throw new InvalidOperationException("Seriously, don't do that");
// phew! dodged a bullet; we're ok here...

请注意,GetType() 不适用于此,因为您不想手动考虑子类、接口(interface)等。

关于c# - is-operator 的最佳用法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com