2009-03-12 11 views
5

나는 이것을 작성했다 - 아주 간단한 - function, 그리고 VB는 이것을하기 위해 미리 빌드 된 기능을 가지고 있지만 궁금한 것을 찾지 못했다. 이것은VB.Net 즉석에서 배열 초기화하기

Dim someNames() as string = {"Hans", "Luke", "Lia"} 

으로 수행하지만 할 수 있기 때문에

Private Shared Function MakeArray(Of T)(ByVal ParamArray args() As T) As T() 
    Return args 
End Function 

그렇게되지 않음

Dim someNames() as string = MakeArray("Hans", "Luke", "Lia") 

처럼 사용할 수에 더 많은

public sub PrintNames(names() as string) 
    // print each name 
End Sub 

PrintNames(MakeArray("Hans", "Luke", "Lia")) 

어떤 아이디어가 좋아?

답변

15

이유라도 수행하지 :

Dim someNames() as string = New String()("Han", "Luke", "Leia") 

유일한 차이점은 지금까지의 내가 말할 수있는 추론을 입력합니다.

난 그냥 확인했습니다, 그리고 VB 9도 implicitly typed arrays 있습니다

Dim someNames() as string = { "Han", "Luke", "Leia" } 

(이것은 내가 아는 한 VB 8에서 작동하지 않을 것입니다,하지만 명시 적 버전 것이라고 암시 버전이 필요합니다. VB 9.에도 새로운 익명 형식)에 대한

+0

우수, 첫 번째 예는 내가 찾던 정확히 것입니다. 감사. –

+2

나는 여기에 가장 중요한 것은 "한"의 정확한 철자임을 모두 동의 할 수 있다고 생각한다. – Andy

+0

@Andy wrong, 그것들이 나타나는 순서 .... 그것은 "Luke", "Han"이어야한다. 그리고 "Leia".... 우리 모두가 Han과 Leia가 서로 가깝게 속하고 동생이 분리하지 않는다는 것을 알게합니다.) – GoldBishop

6
Dim somenames() As String = {"hello", "world"} 
1
PrintNames(New String(){"Hans", "Luke", "Lia"}) 
1

Microsoft는 다음과 같은 형식을 권장

Dim mixedTypes As Object() = New Object() {item1, item2, itemn} 

http://msdn.microsoft.com/en-US/library/8k8021te(v=VS.80).aspx

주마다, 당신은이 인수의 초기화 카운트에서 유추 한, 새로운 배열의 크기를 지정할 필요가 없습니다. 길이를 지정하려면 "길이"가 아닌 배열의 마지막 공간의 색인 번호를 지정하십시오. 즉. 새로운 객체 (2) {0, 1, 2} '주 3 args.

+0

이것은 MS가 제안하는 명시적인 선언 형식입니다. 묵시적인 형식은'Object' 클래스가 정의되고 가정되지 않은 것입니다. 하지만,'Option Explicit'을 설정하면, 그 문장에'Object'가 정의되어 있어야합니다. – GoldBishop