VB.NET에는 out
함수에 전달 된 변수를 초기화 할 필요가없는 C # 함수 매개 변수 와 직접적으로 동일 합니까?
답변
아니요, out
VB 에는 해당 키워드 가 없습니다 .
그러나 VB는 메서드의 모든 지역 변수를 자동으로 초기화하므로 ByRef
먼저 변수를 명시 적으로 초기화 할 필요없이 사용할 수 있습니다 .
예:
Sub Main()
Dim y As Integer
Test(y)
End Sub
Sub Test(ByRef x As Integer)
x = 42
End Sub
(프레임 워크의 코드 (예 : Double.TryParse ) 를 검사하는 경우 <OutAttribute>
추가 된 매개 변수를 볼 수 있지만 COM interop 또는 플랫폼 호출에 대해 호출이 마샬링 될 때만 차이가 있습니다.)
답변
내에서 언급 한 바와 같이 아니, 거기에 비 초기화 변수가 경고없이 메서드에 전달 될 수 있도록 상응하는 구조 없지만, 질의 응답 지정 <Out()>
속성 A의 ByRef
매개 변수 정의를 VB가이를 무시하지만, 되는 C 번호로 처리 이 AS out
파라미터.
그래서, 난을 참조 변수-초기화를 사전 것입니다 Nothing
및 지정 <Out()> ByRef
의도를 (C #을 사용자가 이제까지 당신의 방법에 액세스하는 경우 문제가 해결됩니다) 의미 할 수 있습니다.
Nothing
할당되지 않은 참조 변수 의 기본값 에 액세스하려는시기를 알고 있다고 생각 되면 프로젝트 수준 (프로젝트 속성> 컴파일) 에서 “경고 구성” “할당 전 변수 사용” 을 “없음”으로 설정할 수 있습니다. 이 설정을 변경하기 전에 구성을 “모든 구성”으로 설정하려는 경우) 또는 VS2015 (VB.NET 14)에서 #Disable Warning BC42030
.
답변
C # 버전
void TestFunc(int x, ref int y, out int z) {
x++;
y++;
z = 5;
}
Vb.net 버전
Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
x += 1
y += 1
z = 5
End Sub
최신 정보
주석에서 언급했듯이 아웃 슬롯에서 사용할 매개 변수를 초기화하는 것을 잊지 마십시오
답변
VB.NET에서 배열을 다시 전달하는 “by ref”함수를 호출 한 문제가 발생했습니다.
컴파일러가 경고로 플래그를 지정했지만 괜찮 았습니다. 수정은 매우 간단하며 아마도 좋은 프로그래밍 관행 일 것입니다.
나는 변했다
Dim m_arr_values() as Integer
fnRetArray(m_arr_values)
에
' Even though 'Nothing' is the default value, setting it
' stops the compiler complaining.
Dim m_arr_values() as Integer = Nothing
fnRetArray(m_arr_values)
변수 이름이 설명적인 경우 코딩 할 때도 도움이됩니다.
Sub fnCreatePalette(ByRef arr_in_pal() As color, ByRef arr_out_pal() as uinteger)
...
End Sub
답변
VB.NET에서 참조 방법으로 전달을 사용할 수 있습니다.
초기화 없이는 변수를 사용할 수 없기 때문에 C #에서 Out 매개 변수 메커니즘이 필요합니다.
VB.NET은 자동으로 수행되므로 특수 키워드가 필요하지 않습니다.
ByRef를 사용하십시오.
답변
VB에는 C # 출력과 동일한 속성이 있지만 오늘날에도 사용하더라도 경고가 표시됩니다. github의 vblang 영역에 수정에 대한 자세한 내용이 있습니다. https://github.com/dotnet/vblang/issues/67 .