MyProject.MyForms.m_FormBeingCreated.Add(typeof(T), null);
try
{
try
{
result = Activator.CreateInstance<T>();
return result;
}
object arg_96_0;
TargetInvocationException expr_9B = arg_96_0 as TargetInvocationException;
int arg_B8_0;
if (expr_9B == null)
{
arg_B8_0 = 0;
}
else
{
TargetInvocationException ex = expr_9B;
ProjectData.SetProjectError(expr_9B);
arg_B8_0 = (((ex.InnerException != null) > false) ? 1 : 0);
}
endfilter(arg_B8_0);
}
finally
{
MyProject.MyForms.m_FormBeingCreated.Remove(typeof(T));
}
}
result = Instance;
return result;
}
///我做错了什么?
不断收到错误:预期捕获或最终@object arg_96_0;
运营商'&gt;'不能应用于'bool'和'bool'类型的操作数@ ex.InnerException!= null)
当前上下文中不存在名称“endfilter”。 @endfilter(arg_B8_0);
答案 0 :(得分:3)
你的第一个问题是这行代码
arg_B8_0 = (((ex.InnerException != null) > false) ? 1 : 0);
在C#中,布尔值不能大于或小于,所以请尝试将其更改为
arg_B8_0 = (((ex.InnerException != null) != false) ? 1 : 0);
另外,正如Jeroen和其他人在评论中指出的那样,这段代码不是很干净,并且正在进行一些不需要做的评估。
arg_BB_0 = ex.InnerException != null ? 1 : 0;
这是编写表达式并实现相同目标的更好方法。
您的下一个问题是所有try语句必须附带catch或finally语句。 尝试阅读MSDN上有关正确使用try-catch块的this文章。
如果在当前上下文中出现一个错误,指出endfilter不存在,这意味着您需要检查endfilter声明的范围。 endfilter可能未在当前范围内可以访问的地方声明。 MSDN在这里可以再次提供帮助,This是开始了解范围的好地方。