2013-08-06 17 views
15

VB.NET'te bir dizi bildirmek için bir yol var mı ve daha sonra kodu bilinen bir boyuta sıfırlamak için bir yol var mı?VB.NET Bilinen uzunluktaki yeni boş dizi bildirme

string[] dest; 
// more code here 
dest = new string[src.Length]; 

VB bu denedim ve işe yaramadı: Başka bir deyişle, aşağıdaki C# .NET kod VB.NET eşdeğer arıyorum.

Dim dest() as string 
' more code here 
dest = New String(src.Length) 

Neyi eksik?


NOT: Ben dizinin beyanı ve başlatma ayırmak için arıyorum beri, o

Dim dest(src.Length) as string 

eser onaylamak, ama ne istiyorum sağlamayabilir.

+0

Yeni bir dinamik uzunluk dizisi oluşturmanın ve sonra uzunluğunu zorlamanın amacı nedir? C# koduna bakarsanız, başlatma sırasında yapılır, yapmak istediğiniz gibi bir bildirim değil. – glautrou

+2

'Redim' -' Redim dest (src.Length) ' – Tim

+0

@Tim - VB'de kullanmayı deneyin, diziler uzunluk değil, üst sınırla belirtilir. Yapmanız gerekenler: 'Redim dest (src.Length-1)'. – ToolmakerSteve

cevap

30

kodunda

Dim my_array() As String 

ve üstü biraz farklı.

string[] dest; 
// more code here 
dest = new string[src.Length]; 

eşdeğer Sen zaten belirtildiği Redim kullanabilirsiniz

Dim dest As String() 
' more code here 
dest = New String(src.Length - 1) {} 
+0

Çok teşekkürler! Aradığım şey bu! – SNag

+0

Bu yanıt, Dize türü diziler için çalışır, ancak diğer türlerde değil. – Luminous

+0

@Luminous Yanıt, bir dizi değişkeni kullanarak bir dizi değişkenini başlatmanın bir yolunu gösterir; Bildiğim kadarıyla, diğer türlerle ilgili bir sorun yok. İstisnaın var mı? –

8

şöyle diziyi bildirmek olacaktır Bunu yapmanın normal bir yol: - böyle bir durumda VB.NET sözdizimi

ReDim my_array (src.Length - 1) 
+0

ReDim parametresi en yüksek endekstir. Burada, 'src.Length - 1' ("src.length" yerine) olacaktır. Bunu bir düzenleme olarak göndermek. – ToolmakerSteve

+0

@ToolmakerSteve, haklısınız; Eski moda 1-temelli alışkanlıklarımızdan kurtulmalıyım ... –

3

ama bu sizin C#

Dim dest As String() 
dest = New String(src.Length - 1) {} 

deneyin eşdeğer VB kodudur ve olsa dinamik diziler kullanmaktan kaçının. Genel bir List(Of T) çok daha esnek