2009-10-22 4 views
10

VB.NET'te bir dizi alma veya başlatılamayan ve sıfır uzunluğa sahip bir dizi almanın en iyi yolu nedir? AklımaVB.NET'te boş bir dizi oluşturmanın önerilen yolu nedir?

üç seçenek vardır:

ReDim oBytes(-1) 

oBytes = New Byte(-1) {} 

oBytes = New Byte() {} 

ilk örnek hep kullandık benim şirketteki geliştiricilerin çoğu (biz VB 6 yapardık) budur. Ben şahsen üçüncü örneğini tercih ediyorum, çünkü neler olduğunu anlamanın en kolay yolu.

Her yaklaşımın olumlu ve olumsuz yönleri nelerdir? (Seçenek 2 ve 3 bildiğim çok benzer)?


DÜZENLEME
Yani herkes diğer ReDim önlemek için bir neden biliyor mu o VB günlerden kalmadır olduğundan mı?

Bu, herkesin sahip olduğu cevap olarak bunu kabul etmeyeceğim!

+0

Yanıtı önlemek için ek bir gerekçe sağlamak üzere düzeltildi –

cevap

11

Ben tavsiye: oBytes = New Byte() {}

Sen klasik VB günlerden Redim gibi "klasik VB-izm" ve diğer holdovers önlemek için çalışmalısınız. Üçüncü seçeneği tavsiye ederim.

Düzenleme

bunu önlemek için niçin biraz daha bilgi vermek, this MSDN page bkz. Sayfa özellikle buna karşı bir tavsiyede bulunmazken, Redim'un diğer sözdiziminin yapmadığı eksikliklerden (ve kafa karışıklığı potansiyelinden) muzdarip olduğunu görebilirsiniz.

  1. Redim sadece mevcut diziler kullanılabilir. Yine de, new dizisini bildirmek için semantik olarak eşdeğerdir. Redim, eski diziyi serbest bırakır ve yeni bir tane oluşturur (bu nedenle Redim öğesinin "yapıştırma" veya "parçalama" öğelerine sahip olması gibi değildir). Ayrıca, bir atamanın gerçekleştiğine dair görsel bir belirti olmamasına rağmen, Preserve anahtar sözcüğü kullanılmadıkça yıkıcıdır.
  2. Redim bir dizi oluşturamadığından (ancak yalnızca varolan diziler üzerinde çalışabilir), yalnızca bir yordam içinde kullanılabilir; sınıf düzeyinde New Byte() {} yöntemini kullanmak zorunda kalıyorsunuz, bu da size semantik olarak aynı olsalar bile, yeni diziler atamak için iki görsel olarak ayrı kalıp bırakıyor.
+0

Evet, bu soruyu kıvılcımla bağdaştırdım, bulduğum her yerde eski VB kodunu kaldırma eğilimindeyim! – stevehipwell

+2

Daha fazla katılıyorum. "ReDim" ve "Yeni Bayt (-1)" sadece YANLIŞ görünür. Gözlerime göre, ReDim oBytes (-1'den 0'a), iki elemandan oluşan bir dizi (Vb6'da olacak) bir dizi vermesi gerektiği gibi görünüyor. Lütfen, lütfen LÜTFEN VB.net'ten önce VB olmadığına dair bir dünya olduğunu söyleyemeyiniz. Lütfen? –

+0

@Binary Worrier -% 100 bu konuda sizlerle! VB.NET kullanılabilirlik konularının çoğunun sebebi! – stevehipwell