Подтвердить что ты не робот

Multiassignment в VB, как на языках C-Style

Есть ли способ выполнить это в VB.NET, как на языках C-Style:

struct Thickness
{
    double _Left;
    double _Right;
    double _Top;
    double _Bottom;

    public Thickness(double uniformLength)
    {
        this._Left = this._Right = this._Top = this._Bottom = uniformLength;
    }
}
4b9b3361

Ответ 1

Расширение на правильном ответе Mark

Этот тип стиля присваивания невозможен в VB.Net. Версия С# кода работает, потому что в назначении С# это выражение, которое производит значение. Вот почему он может быть прикован таким образом.

В назначении VB.Net есть оператор, а не выражение. Он не производит никакой ценности и не может быть изменен. Фактически, если вы напишете код "a = b" в качестве выражения, он будет рассматриваться как сравнение значений, а не назначение.

Эрик опубликовал последнее сообщение в блоге на эту тему для С#

На уровне языка назначение - это оператор, а не выражение.

Ответ 2

Как только я опубликую это, кто-то представит пример того, как это сделать. Но Я не думаю, что это возможно. VB.NET рассматривает одно значение в r-значении как сравнение. Например:

  Dim i As Integer
  Dim j As Integer
  i = 5
  j = i = 4
  Debug.Print(j.ToString())
  j = i = 5
  Debug.Print(j.ToString())

Вышеприведенный код печатает 0 (false) и -1 (true).