繁体   English   中英

此语法是什么意思“如果(值是bool v)”?

[英]What does this syntax mean “if (value is bool v)”?

我在HelixToolkit.WPF.SharpDX例子发现这个在这里

public sealed class InverseBoolConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is bool v)
        {
            return !v;
        }
        else
        {
            return true;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is bool v)
        {
            return !v;
        }
        else
        {
            return true;
        }
    }
}

它无法编译,我无法理解此语法。 Google也没有解释。 有人可以解释一下吗?

is关键字是C#模式匹配的一部分,可让您检查是否可以将变量转换为指定的类型。 如果可以,则表达式的计算结果为true。

如果在表达式后指定变量名,例如

if (obj is bool variableName)

variableName变量(在这种情况下为bool类型)将使用obj的值进行初始化。 这使您可以在if语句的范围内使用类型化的变量,从而使您不必在每次要执行类型特定的操作时都强制转换初始obj变量。

有关更多信息,请查看thisthis

is语句执行检查是否可以将value强制转换为布尔值。 如果检查结果为肯定,则该值将转换为变量v

在此处查找更多说明: https : //docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/is

但是,我看不到它不能编译的原因。 为此,您至少必须添加来自编译器的错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM