gpt4 book ai didi

c# - Cast using is twice,或 use as once 并创建一个新变量

转载 作者:太空狗 更新时间:2023-10-29 20:43:53 24 4
gpt4 key购买 nike

在今天的前一个问题中,将这两种不同的方法作为问题的答案。

我们有一个可能实现也可能不实现IDisposable 的对象。如果是,我们想处理它,如果不是,我们什么都不做。这两种不同的方法是:

1)

if(toDispose is IDisposable)
(toDispose as IDisposable).Dispose();

2)

IDisposable disposable = toDispose as IDisposable;
if( disposable != null )
disposable.Dispose();

主要是,从评论来看,共识似乎是 2) 是最好的方法。

但是看看差异,我们归结为:

1) 对 toDispose 执行两次转换。

2) 只执行一次转换,但创建一个新的中间对象。

我猜想 2 会稍微慢一些,因为它必须分配一个新的局部变量,那么为什么这被认为是这种情况下的最佳解决方案呢?仅仅是因为可读性问题?

最佳答案

没有真正回答你的问题,但我会推荐你​​这个结构:

using (toDispose as IDisposable)
{
...
}

让编译器担心 ifsfinallyDispose 调用。

关于c# - Cast using is twice,或 use as once 并创建一个新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3768854/

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