VB.NET 等同于 C# 7 的运算符声明模式
VB.NET equivalent for the C# 7 is operator declaration pattern
有没有等同于C# 7 is operator declaration pattern的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 is operator declaration pattern...
非常感谢。
目前没有。如果你想实现这个,你将不得不使用你在问题中已经提到的一些更长的格式。
C# 和 VB 语言并不总是具有相同的功能。
使用一行如果
If obj is bitmap Then Dim bmp = obj
或使用 in-line if(这是 if 函数)
Dim bmp = If(obj is bitmap, obj, Nothing)
本身不完全是pattern-matching,但是做同样的事情。
你不能在 C# 中这样做:
var bmp = obj is bitmap ? obj : nothing;
有没有等同于C# 7 is operator declaration pattern的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 is operator declaration pattern...
非常感谢。
目前没有。如果你想实现这个,你将不得不使用你在问题中已经提到的一些更长的格式。
C# 和 VB 语言并不总是具有相同的功能。
使用一行如果
If obj is bitmap Then Dim bmp = obj
或使用 in-line if(这是 if 函数)
Dim bmp = If(obj is bitmap, obj, Nothing)
本身不完全是pattern-matching,但是做同样的事情。
你不能在 C# 中这样做:
var bmp = obj is bitmap ? obj : nothing;