CS1003 语法错误,预期 'when'

CS1003 Syntax error, 'when' expected

我阅读 C# 6.0 中的异常过滤器已经有一段时间了

我想尝试在行动中使用它。但不确定为什么会出现以下错误。

CS1003 Syntax error, 'when' expected 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();
    }
 }}

我通过

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

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

谢谢。

使用when代替if

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

许多在线链接确实表明 if 应该是正确的,但现在已不再正确。过滤异常的语法是 when 而不是 if:

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

Official MSDN documentation


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

异常过滤以前使用 if(在 CTP 中)但现在使用 when.

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

This blog entry 状态:

Note: In previous versions of the Visual Studio 2015 CTP, the if keyword was used instead of when.