Есть ли способ выполнить это в 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;
}
}
Расширение правильного ответа Марка
Этот тип стиля задания невозможен в VB.Net. Версия кода C # работает, потому что в C # присваивание - это выражение, которое производит значение. Вот почему его можно связать таким образом.
В VB.Net присваивание - это инструкция, а не выражение. Он не имеет значения и не может быть изменен. Фактически, если вы напишете код «a = b» как выражение, он будет рассматриваться как сравнение значений, а не присваивание.
Недавняя запись в блоге Эрика на эту тему для C #
На уровне языка присвоение - это утверждение, а не выражение.
Как только я опубликую это, кто-нибудь приведет пример того, как это сделать. Но я не думаю, что это возможно. 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).