What is the advised way to make an empty array in VB.NET?
What is the best way to take an array in VB.NET which can either be Nothing or initialised and give it a length of zero?
The three options I can think of are:
ReDim oBytes(-1)
oBytes = New Byte(-开发者_如何学编程1) {}
oBytes = New Byte() {}
The first example is what most of the developers in my company (we used to do VB 6) have always used. I personaly prefer the third example as it is the easiest to understand what is happening.
So what are the positives and negative to each approach (option 2 and 3 are very similar I know)?
EDIT
So does anyone know of a reason to avoidReDim
other that because it is a holdover from the VB days?
Not that I won't accept that as the answer if that is all anyone has!
I recommend: oBytes = New Byte() {}
You should try to avoid "classic VB-isms" like Redim
, and other holdovers from the classic VB days. I would recommend the third option.
Edit
To provide some more information about why to avoid it, see this MSDN page. While the page doesn't specifically advise against it, you can see that Redim
suffers from shortcomings (and potential for confusion) that the other syntax does not.
Redim
can only be used on existing arrays. Even so, it is semantically equivalent to declaring anew
array.Redim
releases the old array and creates a new one (so it isn't as ifRedim
has the ability to "tack on" or "chop off" elements). Additionally, it is destructive unless thePreserve
keyword is used, even though there is no visual indication that an assignment is taking place.- Because
Redim
cannot create an array (but can only work on existing arrays), it can only be used within a procedure; at the class level you're forced to use theNew Byte() {}
method, leaving you with two visually distinct patterns for assigning new arrays, even though they're semantically identical.
精彩评论