C# CS1003&x9;语法错误&x27;何时';预期

C# CS1003&x9;语法错误&x27;何时';预期,c#,c#-6.0,C#,C# 6.0,我已经花了很长时间阅读了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; tr

我已经花了很长时间阅读了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();
    }
 }}
我在我的VisualStudio中通过

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


谢谢。

使用
when
而不是
if

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

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

try
{
    // Code here
}
catch (Exception ex) when (val == 0)
{
    WriteLine("Input Invalid");
}
看到这里了吗



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

异常过滤过去使用
if
(在CTP中),但现在使用
when

catch (Exception ex) when (val == 0)
国家:

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


如果将
if(val==0)
更改为
when(val==0)
,会发生什么情况?@mjwills,它会构建,但我提到的链接显示使用ifWell,该页面是错误的。在C#6的早期开发中,它是
if
,但他们最终在
时将其改为
@Kgn-web阅读文档比阅读各种网站上的文章要好。但是所有这些链接都是关于使用if-Cool的。。谢谢:)另外,如果您能在帖子中添加一行,那将是非常棒的。注意:在Visual Studio 2015 CTP的早期版本中,使用了if关键字,而不是when。