【发布时间】:2010-03-03 09:52:28
【问题描述】:
运行 FXCop 时出现以下错误:
CA1800:Microsoft.Performance: 'obj',一个变量,被强制转换为类型 在方法中多次“工作” 'ProductsController.Details(int, 整数)'。缓存'as'的结果 运算符或直接强制转换,以便 消除多余的演员表 说明
代码:
object obj = repository.GetJobOrPlace(jobId);//Returns (object) place or (object) product
if (obj != null)
{
if (obj is Job)
{
Job j = (Job) obj;
Debug.WriteLine(j.Title);
}
else if (obj is Place)
{
Place p = (Place) obj;
Debug.WriteLine(p.Title);
}
}
这有什么问题?我只能看到一个演员表:Job j = (Job) obj。
【问题讨论】:
-
就 .NET 而言,“is”运算符也是一个强制转换。