gpt4 book ai didi

c# - FxCop 对如何消除多余的 castclass 感到困惑

转载 作者:行者123 更新时间:2023-11-30 20:07:14 25 4
gpt4 key购买 nike

我正在尝试解决一些 fxcop 问题,但我对这个问题真的很困惑。

在派生类的 setter 中,我正在检查是否应该进行赋值

if (!(value is TypeA))
{
throw new ArgumentException("value is not of TypeA type");
}

_action = (TypeA)value;

FxCop 正在提示:

'value', a parameter, is cast to type 'TypeA' multiple times in method. Cache the result of the 'as' operator or direct cast in order to eliminate the redundant castclass instruction.

但是,在 this 中msdn 示例( 定义)我看到了这个:

if (o is Class1)
{
Console.WriteLine("o is Class1");
a = (Class1)o;
}

这和我做的完全一样。那么,有解决办法吗?

我能想到的是:

TypeA tmpAction = value as TypeA;
if(tmpAction == null)
{
throw new ArgumentException();
}

_action = tmpAction;

最佳答案

TypeA tmpAction = value as TypeA;
if(tmpAction == null)
{
throw new ArgumentException();
}

你给出的例子是正确的 - 如果你需要转换和使用你转换到的类型的变量,使用 asnull 检查而不是 所以你不必做两次。

关于c# - FxCop 对如何消除多余的 castclass 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695834/

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