【问题标题】:What is the vb.net equivalent of switch expressions in c# 8 [closed]c#8中switch表达式的vb.net等价物是什么[关闭]
【发布时间】:2020-10-17 01:43:59
【问题描述】:

c# 8 中 switch 表达式的 vb.net 等效项是什么? 请参阅 msdn 中的此示例代码。当我尝试将其转换为 vb.net 时,它显示一条错误消息。

public static class SwitchExample
{
    public enum Directions
    {
        Up,
        Down,
        Right,
        Left
    }

    public enum Orientation
    {
        North,
        South,
        East,
        West
    }

    public static void Main()
    {
        var direction = Directions.Right;
        Console.WriteLine($"Map view direction is {direction}");

        var orientation = direction switch
        {
            Directions.Up    => Orientation.North,
            Directions.Right => Orientation.East,
            Directions.Down  => Orientation.South,
            Directions.Left  => Orientation.West,
        };
        Console.WriteLine($"Cardinal orientation is {orientation}");
    }
}

【问题讨论】:

  • 它是Select Case,它不支持这样的表达式。
  • 你可以为每个人做类似的事情:Dim ori As Orientation Select Case direction Case Direction.Up ori = Orientation.North End Select 等等。
  • VB.NET 的 switch 语句一直比 C# 更强大。也许它不需要改造。
  • 我认为这是 C# 8 中的新功能。docs.microsoft.com/en-us/dotnet/csharp/whats-new/…
  • @Enigmativity:C# 也没有——这是无聊的语言设计师开发的语法色情的一个很好的例子。

标签: c# .net vb.net


【解决方案1】:

VB 中的等价物具有大致相同的复杂程度,因此您首先必须怀疑使用 switch 表达式的用处:

Dim orientation As Orientation
Select Case direction
    Case Directions.Up
        orientation = Orientation.North
    Case Directions.Right
        orientation = Orientation.East
    Case Directions.Down
        orientation = Orientation.South
    Case Directions.Left
        orientation = Orientation.West
End Select

查看我对“语法色情”的评论。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2015-06-04
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多