簡體   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