2009-10-22 4 views
10

VB.NET에서 Nothing이거나 초기화 된 배열을 취하는 가장 좋은 방법은 무엇이며 길이를 0으로 지정 하시겠습니까? 내가 생각할 수있는VB.NET에서 빈 배열을 만드는 방법은 무엇입니까?

세 가지 옵션은 다음과 같습니다

ReDim oBytes(-1) 

oBytes = New Byte(-1) {} 

oBytes = New Byte() {} 

첫 번째 예는 항상 사용하고 내 회사에서 개발자의 대부분은 (우리가 VB 6을 수행하는 데 사용) 것입니다. 나는 개인적으로 일어나고있는 일을 이해하는 것이 가장 쉽기 때문에 세 번째 예를 선호한다.

그렇다면 각 접근 방식에 대한 긍정적 인 점과 부정적인 점은 무엇입니까 (옵션 2와 3은 매우 유사합니다).


편집
그래서 사람이 다른 ReDim을 피하기 위해 이유를 알고 있나요가 VB 일에서 취한 조치이기 때문에 그?

그렇지 않은 사람이라면 그 대답을 받아 들일 수 없습니다!

+0

답변을 피하기 위해 추가 정당성을 제공합니다. –

답변

11

내가 추천 : oBytes = New Byte() {}

당신은 고전 VB 일에서 Redim 같은 "고전 VB-ISMS"및 기타 이월을 방지하기 위해 시도해야합니다. 세 번째 옵션을 권하고 싶습니다.

편집

을 방지하는 이유에 대해 좀 더 많은 정보를 제공하기 위해, this MSDN page를 참조하십시오. 이 페이지가 특별히 조언하는 것은 아니지만 Redim은 다른 구문과 달리 단점 (혼동 가능성)이 있습니다.

  1. Redim기존 배열에 사용할 수 있습니다. 그렇다고해도 배열은 new이라고 선언하는 것과 의미 상 동일합니다. Redim은 이전 배열을 해제하고 새 배열을 만듭니다 (따라서 Redim에 "tack on"또는 "chop off"요소가있는 것처럼 보이지 않습니다). 또한 할당이 이루어지고 있다는 시각적 표시가 없더라도 Preserve 키워드가 사용되지 않으면 파괴적입니다.
  2. Redim은 배열을 만들 수 없으므로 (기존 배열에서만 작동 할 수 있기 때문에) 프로 시저 내에서만 사용할 수 있습니다. 클래스 수준에서는 New Byte() {} 메서드를 사용해야하며, 의미가 동일한 경우에도 새 배열을 할당하는 시각적으로 두 가지 패턴을 남겨 둡니다.
+0

예, 이것이이 질문을 촉발시킨 것입니다. 이전 버전의 VB 코드는 어디에서나 찾을 수 있습니다. – stevehipwell

+2

더 이상 동의 할 수 없습니다. "ReDim"과 "New Byte (-1)"은 잘못된 것입니다. 내 눈에는 마치 ReDim oBytes (-1에서 0)를 말하는 것처럼 보입니다.이 요소는 Vb6에서 두 요소의 배열을 제공해야하는 것처럼 보입니다. 제발, 제발 VB.net 전에 단지 VB가 없다는 것을 세상에 제발 할 수 없습니까? 부디? –

+0

@Binary Worrier - 100 % 당신과 함께! 그것은 VB.NET 유용성 문제의 대부분을위한 이유입니다! – stevehipwell

관련 문제