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;
}
}
Ответы
Ответ 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).