变量未在范围内声明,但有效 ("inference"??)

Variable not declared in the scope, but works ("inference"??)

以下语法适用于 Visual Studio 2017,.NET 4.5 中的项目。 同样的语法在另一台机器上不起作用,Visual Studio 2015,.NET 4.5。 我不知道这种语法(对我来说 'eventargs' 在那个范围内不存在)。 C# 中是否有任何可能推断 'eventargs' 的更新? 我没有找到任何相关信息...

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (!(value is Telerik.XamarinForms.Input.AutoComplete.SuggestionItemSelectedEventArgs eventArgs))
            throw new ArgumentException("Expected SuggestionItemSelectedEventArgs as value", nameof(value));

        return eventArgs;
    }

这是一个名为 pattern matching 的 C# 7 功能,于 Visual Studio 2017 年与编译器一起引入。

基本上 eventArgs 是用 is 表达式声明的。