Multiassignment in VB like in C-Style languages
Is there a way to perform thi开发者_StackOverflow中文版s in VB.NET like in the C-Style languages:
struct Thickness
{
double _Left;
double _Right;
double _Top;
double _Bottom;
public Thickness(double uniformLength)
{
this._Left = this._Right = this._Top = this._Bottom = uniformLength;
}
}
Expanding on Mark's correct answer
This type of assignment style is not possible in VB.Net. The C# version of the code works because in C# assignment is an expression which produces a value. This is why it can be chained in this manner.
In VB.Net assignment is a statement and not an expression. It produces no value and cannot be changed. In fact if you write the code "a = b" as an expression it will be treated as a value comparison and not an assignment.
Eric's recent blog post on this subject for C#
- http://blogs.msdn.com/ericlippert/archive/2010/02/11/chaining-simple-assignments-is-not-so-simple.aspx
At a language level assignment is a statement and not an expression.
As soon as I post this, someone will provide an example of how to do it. But I don't think it is possible. VB.NET treats the single equals in the r-value as a comparison. For example:
Dim i As Integer
Dim j As Integer
i = 5
j = i = 4
Debug.Print(j.ToString())
j = i = 5
Debug.Print(j.ToString())
The above code prints 0 (false) and -1 (true).
精彩评论