代码之家  ›  专栏  ›  技术社区  ›  Kgn-web

CS1003语法错误,应为“when”

  •  2
  • Kgn-web  · 技术社区  · 7 年前

    我花了很长时间阅读C#6.0中的异常过滤器

    CS1003语法错误,应为“when”C_6.0

    这就是我的代码片段的样子

    using System;
    using static System.Console;
    
    namespace C_6._0
    {
    public class Program
    {
        static void Main(string[] args)
        {
            int val = 1;
            try
            {
                WriteLine("Enter value :");
                val = int.Parse(ReadLine());
    
            }
            catch (Exception ex) if (val == 0)
            {
                WriteLine("Input Invalid");
            }
            catch (Exception ex)
            {
                WriteLine(ex.Message);
            }
            ReadLine();
        }
     }}
    

    我在我的visual studio中检查了C#的6.0版本

    属性->构建->高级生成设置

    3 回复  |  直到 7 年前
        1
  •  6
  •   Gilad Green Fábio    7 年前

    if 应该是正确的,但它不再是真的了。过滤异常的语法为 when 如果 :

    try
    {
        // Code here
    }
    catch (Exception ex) when (val == 0)
    {
        WriteLine("Input Invalid");
    }
    

    请参见此处 Official MSDN documentation


    你评论的文章已经过时了。正如mjwills所提到的,原因是在Visual Studio 2015 CTP的早期版本中,使用了if关键字,而不是when。

        2
  •  2
  •   mjwills Myles McDonnell    7 年前

    用于使用的异常筛选 if (在CTP中)但现在使用 when .

    catch (Exception ex) when (val == 0)
    

    This blog entry

    注意:在Visual Studio 2015 CTP的早期版本中,if 使用了关键字而不是when。

        3
  •  0
  •   Alejandro    7 年前

    使用 when 而不是 if

    catch (Exception ex) when (val == 0)