gpt4 book ai didi

c# - Resharper、ICloneable 且永不为空

转载 作者:太空狗 更新时间:2023-10-30 01:04:16 26 4
gpt4 key购买 nike

Resharper 提示以下代码,说最后的空检查是多余的,因为“表达式总是假的”:

  ICloneable data = item as ICloneable;
if (data == null)
throw new InvalidCastException("blah blah, some error message");

object copy = data.Clone();
if (copy == null) // <-- this is where it complains.
return default(T);

它怎么知道它永远不能为空?

最佳答案

ReSharper 假设您的对象遵守 ICloneable 的契约,除其他外,它说

The resulting clone must be of the same type as, or compatible with, the original instance.

data 的事实来看被检查为非空,并假设您从 ICloneable.Clone() 的实现中返回相同或兼容类型的对象。 ReSharper 得出结论 copy也是非空的,触发警告。

当然可以返回null来自 Clone .但是,返回 null将是一个编码错误,因此跳过该空检查是个好主意。

关于c# - Resharper、ICloneable 且永不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192145/

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