2008-09-04 45 views
40

Làm cách nào để tạo một mảng chuỗi một chiều trống?VB.NET Chuỗi Mảng Rỗng

+0

@Pacane hãy [đọc] (http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their -tiêu đề). –

Trả lời

29

Dim strEmpty (-1) As String

+7

Upvote vì nó là chính xác. Tuy nhiên, để rõ ràng, tôi thích Dim strEmpty() Như String = New String() {} như Mark cung cấp và SoMoS xác nhận. Tuy nhiên, Mark mô tả hai kỹ thuật không tương đương ... xem nhận xét đó. –

+9

Cập nhật ... Chúng tôi tìm thấy thông tin sau tương đương và ít lễ hơn: Dim myArray() = Chuỗi mới() {} –

+7

Đó là 10 cú pháp xấu nhất tôi thấy trong cuộc đời mình; =) –

1

Không chắc lý do tại sao bạn muốn, nhưng # cách C sẽ

string[] newArray = new string[0]; 

Tôi đoán rằng VB sẽ không quá khác nhau này.

Nếu bạn đang xây dựng một mảng trống để bạn có thể cư nó với các giá trị sau đó, bạn thực sự nên xem xét sử dụng

List<string> 

và chuyển đổi nó vào một mảng (nếu bạn thực sự cần nó như một mảng) với

newListOfString.ToArray(); 
6

Cái gì như:

Dim myArray(9) as String 

sẽ cung cấp cho bạn một loạt các 10 Chuỗi ref erences (mỗi chỉ vào Không có gì).

Nếu bạn không chắc chắn về kích thước lúc khai, bạn có thể khai báo một mảng chuỗi như thế này:

Dim myArray() as String 

Và sau đó bạn có thể trỏ nó ở một mảng đúng kích thước của Strings sau:

ReDim myArray(9) as String 

ZombieSheep là đúng về việc sử dụng Danh sách nếu bạn không biết tổng kích thước và bạn cần phải tự động điền. Trong VB.NET đó sẽ là:

Dim myList as New List(Of String) 
myList.Add("foo") 
myList.Add("bar") 

Và sau đó để có được một mảng từ Danh sách rằng:

myList.ToArray() 

@ Mark

Cảm ơn bạn đã sửa chữa.

0

FYI, hãy cẩn thận với ReDim -ing

Đó là loại nguy hiểm vào những thời điểm. như goto

+1

Trong cách nào là 'ReDim' nguy hiểm ? –

+0

@chakrit Redim hoạt động tốt như toán tử goto. – GGSoft

6

Mảng bạn tạo ra bởi Dim s (0) As StringLÀ KHÔNG EMPTY

Trong VB.Net, subscript bạn sử dụng trong mảng là chỉ số của phần tử cuối cùng. VB.Net theo mặc định bắt đầu lập chỉ mục tại 0, vì vậy bạn có một mảng đã có một phần tử.

Thay vào đó, bạn nên thử sử dụng System.Collections.Specialized.StringCollection hoặc (thậm chí tốt hơn) System.Collections.Generic.List(Of String). Chúng chiếm khá nhiều thứ giống như một mảng chuỗi, ngoại trừ chúng tải tốt hơn để thêm và xóa các mục. Và hãy trung thực: bạn hiếm khi tạo được một mảng chuỗi trống mà không muốn thêm ít nhất một phần tử vào đó.

Nếu bạn thực sự muốn có một mảng chuỗi rỗng, tuyên bố nó như thế này:

Dim s As String() 

hoặc

Dim t() As String 
+2

Tính năng này không cung cấp hành vi được yêu cầu. Mỗi trong số này, t và s là Không có gì. YonahW muốn một mảng trống mà giải pháp của GR8DA cung cấp, mặc dù tôi thích: Dim strEmpty() Như String = New String() {} –

35

VB là 0-indexed in array declarations, vì vậy seomthing như Dim myArray(10) as String mang đến cho bạn yếu tố. Đó là một sai lầm phổ biến khi dịch từ ngôn ngữ C.

Vì vậy, đối với một mảng trống rỗng, một trong những điều sau đây sẽ làm việc:

Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements 
Dim str() as String = New String() { } ' implicit size, initialized to empty 
+3

Tôi luôn làm Dim str() như String = New String() {} vì tôi cảm thấy nó là cách tốt nhất để thấy rằng nó là một mảng chuỗi EMPTY "{}" –

+2

Mark, Dim str (0) tạo ra một mảng với độ dài là 1 với NULL tại chỉ số 0. Thứ hai, Dim str() ... {} tạo ra một mảng trống có độ dài bằng 0 khi YonahW muốn. –

+0

@RandyEppinger là chính xác (và đã trong 3 năm qua ...). str (0) tạo ra một mảng có độ dài 1 (được lập chỉ mục 0 có nghĩa là chiều dài là +1 khai báo). Tôi nên đặt str (-1) (trong đó, khi +1 cho bạn độ dài 0). –

3

Một cách khác để làm điều này:

Dim strings() As String = {} 

Kiểm tra rằng nó là một mảng chuỗi rỗng:

MessageBox.Show("count: " + strings.Count.ToString) 

Sẽ hiển thị hộp thông báo cho biết "count: 0".

6

Bạn không phải bao gồm Chuỗi hai lần và bạn không phải sử dụng Mới.
Một trong những điều sau đây sẽ làm việc ...

Dim strings() as String = {} 
Dim strings as String() = {} 
Các vấn đề liên quan