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

Сообщение Радует меня новый синтаксис C# от 16.06.2017 10:38

Изменено 16.06.2017 10:38 VladD2

Радует меня новый синтаксис C#
unsafe class Program
{
  public static (int First, string Second) TupleField;

  static (int x, string y) Tuple;

  static ref (int x, string y) var(int x, string y)
  {
    return ref Tuple;
  }

  static ref (int x, string y) Foo(int x, string y)
  {
    return ref Tuple;
  }

  static void Main()
  {
    var tuple = (42, "b");

    var(a, b) = tuple; // объявление двух локальных переменных.
    Foo(a, b) = tuple; // а здесь вызов метода!
    var(a, b);         // и здесь вызов метода! Не путать! :)
  }
}


Вот на хрена сначала было делать var контекстным ключевым словом, а потом делать исключения для него?

Причем на выпуск спецификаций C# Microsoft забил, так что описание всей этой магии отсутствует. Если я не прав, бросьте в меня ссылкой.

Сейчас пилю поддержку фич 7-го Шарпа на Nitra. Приходится заниматься реверс-инжинирингом логики этих бравых парней.
Радует меня новый синтаксис C#
class Program
{
  public static (int First, string Second) TupleField;

  static (int x, string y) Tuple;

  static ref (int x, string y) var(int x, string y)
  {
    return ref Tuple;
  }

  static ref (int x, string y) Foo(int x, string y)
  {
    return ref Tuple;
  }

  static void Main()
  {
    var tuple = (42, "b");

    var(a, b) = tuple; // объявление двух локальных переменных.
    Foo(a, b) = tuple; // а здесь вызов метода!
    var(a, b);         // и здесь вызов метода! Не путать! :)
  }
}


Вот на хрена сначала было делать var контекстным ключевым словом, а потом делать исключения для него?

Причем на выпуск спецификаций C# Microsoft забил, так что описание всей этой магии отсутствует. Если я не прав, бросьте в меня ссылкой.

Сейчас пилю поддержку фич 7-го Шарпа на Nitra. Приходится заниматься реверс-инжинирингом логики этих бравых парней.