需要帮助C# - 预期的catch或者最终+不能应用于操作数

时间:2013-12-02 22:16:47

标签: c# try-catch finally

           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);

1 个答案:

答案 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是开始了解范围的好地方。