Мультиприсвоение в VB как на языках C-стиля

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

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

    public Thickness(double uniformLength)
    {
        this._Left = this._Right = this._Top = this._Bottom = uniformLength;
    }
}
12
задан Shimmy 22 February 2010 в 16:03
поделиться

2 ответа

Расширение правильного ответа Марка

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

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

Недавняя запись в блоге Эрика на эту тему для C #

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

15
ответ дан 2 December 2019 в 06:26
поделиться

Как только я опубликую это, кто-нибудь приведет пример того, как это сделать. Но я не думаю, что это возможно. 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).

9
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: