VB.NET等效于C#7类型模式匹配

时间:2017-11-26 11:09:50

标签: vb.net casting c#-7.0

是否有与此相当的VB.NET? 请特别注意代码示例中的bmp

public void MyMethod(Object obj)
{
    if (obj is Bitmap bmp)
    {
        // ...
    }
}

或者is的短模式匹配语法是C#独有的吗?

修改

我已经知道这些语法:

    If TypeOf obj Is Bitmap Then
        Dim bmp As Bitmap = obj
        ' ...
    End If

    Dim bmp As Bitmap = TryCast(obj, Bitmap)
    If bmp IsNot Nothing Then
        ' ...
    End If

我想知道的是,是否有更短的内容,例如that new C#7 syntax...

非常感谢。

2 个答案:

答案 0 :(得分:3)

目前,没有。如果您想要实现此功能,则必须使用您在问题中提到的一些较长格式。

C#和VB语言并不总是具有相同的功能。

答案 1 :(得分:1)

使用单行,如果

If obj is bitmap Then Dim bmp = obj

或使用内联if(这是if函数)

Dim bmp = If(obj is bitmap, obj, Nothing)

本身并不是完全的模式匹配,但功能相同。

您不能在C#中这样做吗?

var bmp = obj is bitmap ? obj : nothing;