Информация об изменениях

Сообщение Re[8]: Introducing C# Source Generators от 04.05.2020 4:33

Изменено 04.05.2020 4:34 _NN_

Re[8]: Introducing C# Source Generators
Здравствуйте, varenikAA, Вы писали:

AA>Здравствуйте, _NN_, Вы писали:


_NN>>Здравствуйте, varenikAA, Вы писали:


AA>>>Но C#(не удержусь), движется по скользому пути — добавляет в компилятор кучу фичей имеющих неоднозначный смысл: например, два вида switch — один конструкция(старое), другой выражениие(новое), причем ограниченное функциями возврата, т.е. только return из функции, но не var x = switch.


_NN>>Кто это вам сказал ?

_NN>>https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/switch-expression

AA>_

_NN>> Directions.Left => Orientation.West,

AA>А если return вместо => ?


Нет проблем

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

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

    public static Orientation a()
    {
        var direction = Directions.Right;
     
        return (direction switch
        {
            Directions.Up => Orientation.North,
            Directions.Right => Orientation.East,
            Directions.Down => Orientation.South,
            Directions.Left => Orientation.West,
        });
    }
}


https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0ATEBqAPgAQGYACfARiVICZiBlAdwEsAXMACwFEEBDAWwAcANjACwAKADe44jNIkYAOwCuvYgBFGsMM0YQFAZ2mypY2WeIBVfmiPn1Eegpum7xAEqMA5m2bPXxABkYADNmW2IAX3FwomJFFWIAeShGRWZuHT1wk38AOWhmNj9XWgglQuK7Dm59X3CzAHUYWvCosRiSckpk1IV0zIVibgAKAEps+tkAN24oYgxNGG1dQYBedUXlvX0AOg9vZgBuesmZfAB2YmGFrQHifSZWNlPiHP9ZDVuV3atiVYA+JIpNIZFY7fJQCovMyfJYDXb7Hx/QE9EEDHbVWqVd6wrYGHZqBxrFHAvqgvQ7UrlIrQj6beE7IKhZFA3r9MFNLEvCKjY4uGRtCJAA=
Re[8]: Introducing C# Source Generators
Здравствуйте, varenikAA, Вы писали:

AA>Здравствуйте, _NN_, Вы писали:


_NN>>Здравствуйте, varenikAA, Вы писали:


AA>>>Но C#(не удержусь), движется по скользому пути — добавляет в компилятор кучу фичей имеющих неоднозначный смысл: например, два вида switch — один конструкция(старое), другой выражениие(новое), причем ограниченное функциями возврата, т.е. только return из функции, но не var x = switch.


_NN>>Кто это вам сказал ?

_NN>>https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/switch-expression

AA>_

_NN>> Directions.Left => Orientation.West,

AA>А если return вместо => ?


Нет проблем

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

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

    public static Orientation a()
    {
        var direction = Directions.Right;
     
        return direction switch
        {
            Directions.Up => Orientation.North,
            Directions.Right => Orientation.East,
            Directions.Down => Orientation.South,
            Directions.Left => Orientation.West,
        };
    }
}


https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0ATEBqAPgAQGYACfARiVICZiBlAdwEsAXMACwFEEBDAWwAcANjACwAKADe44jNIkYAOwCuvYgBFGsMM0YQFAZ2mypY2WeIBVfmiPn1Eegpum7xAEqMA5m2bPXxABkYADNmW2IAX3FwomJFFWIAeShGRWZuHT1wk38AOWhmNj9XWgglQuK7Dm59X3CzAHUYWvCosRiSckpk1IV0zIVibgAKAEps+tkAN24oYgxNGG1dQYBedUXlvX0AOg9vZgBuesmZfAB2YmGFrQHifSZWNlPiHP9ZDVuV3atiVYA+JIpNIZFY7fJQCovMyfJYDXb7Hx/QE9EEDHbVWqVd6wrYGHZqBxrFHAvqgvQ7UrlIrQj6beE7IKhZFA3r9MFNLEvCKjY4uGRtCJAA=