programing

VB.NET에서 문자열 배열 선언 및 초기화

stoneblock 2023. 5. 19. 23:58

VB.NET에서 문자열 배열 선언 및 초기화

함수에서 문자열 배열을 반환하려다가 오류로 인해 놀랐습니다.

이 작업이 효과가 있을 것으로 예상했지만 오류가 발생합니다.

Public Function TestError() As String()
    Return {"foo", "bar"}
End Function

효과:

Public Function TestOK() As String()
    Dim ar As String() = {"foo", "bar"}
    Return ar
End Function

다음과 같이 합니다.

Public Function TestOK() As String()
    Return New String() {"foo", "bar"}
End Function

{}의 의미가 불분명한 것 같습니다. 문자열 배열을 명시적으로 만들고 초기화하지 않고 암시적으로 반환하는 방법이 있습니까?

Visual Basic 10 대 Visual Basic 9에서 유형 추론에 대한 배열 이니셜라이저 지원이 변경되었습니다.

이전 버전의 VB에서는 배열을 나타내기 위해 빈 괄호를 사용해야 했습니다.또한 다음과 같이 달리 명시되지 않는 한 배열을 객체 배열로 정의합니다.

' Integer array
Dim i as Integer() = {1, 2, 3, 4} 

' Object array
Dim o() = {1, 2, 3} 

추가 정보 확인:

Visual Basic 2010 중단기 변경 사항

Visual Basic 2010의 수집 및 배열 이니셜라이저

Public Function TestError() As String()
     Return {"foo", "bar"}
End Function

저에게는 잘 작동하고 당신에게는 잘 작동해야 하지만, 당신의 프로젝트에서 암묵적 선언을 사용하는 것을 허용해야 할 수도 있습니다.프로그램 설정의 컴파일 섹션에서 옵션 제한을 해제하는 것 같습니다.

VS 2008(VB.NET 9.0)을 사용하고 있으므로 새 인스턴스 생성을 선언해야 합니다.

New String() {"foo", "Bar"}

이 작업을 수행하려면 "옵션 추론"을 지정해야 합니다.

옵션 추론을 사용하면 컴파일러가 사용자의 코드로 표시되는 내용을 추측할 수 있으므로 {"stuff"}이(가) 문자열 배열이라고 추측할 수 있습니다."Option Infer Off"를 사용하면 {"stuff"}에 할당된 유형이 없으므로 유형 지정자가 없으면 항상 실패합니다.

Infer 옵션은 프로젝트에서는 기본적으로 On이지만 이전 프레임워크에서 3.5까지 마이그레이션할 때는 기본적으로 Off입니다.

의견 수렴:

또한 "Option Explicit Off(옵션 명시적 해제)"가 있다고 합니다.제발 이러지 마.

옵션 명시적 해제를 설정하면 변수를 선언할 필요가 없습니다.이는 다음 코드가 소리 없이 보이지 않게 변수를 생성한다는 것을 의미합니다.Y":

Dim X as Integer
Y = 3

이것은 끔찍하고, 미쳤으며, 잘못된 것입니다.이것은 오타를 낼 때 변수를 만듭니다.저는 그들이 그 언어에서 그것을 제거하기를 계속 바랍니다.

언급URL : https://stackoverflow.com/questions/5262577/declaring-and-initializing-a-string-array-in-vb-net