답변:
아니요, 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 또는 플랫폼 호출에 대해 호출이 마샬링 될 때만 차이가 있습니다.)
ByRef
매개 변수로 전달할 때 컴파일러 경고가 표시됩니다 . (값 유형 매개 변수에서는 발생하지 않습니다.)
Nothing
그들에게 할당해도 결과가 변경되지는 않지만 경고가 제거됩니다.
Nothing
지금까지 그들에게 할당 했습니다. 대규모 레거시 웹 사이트에서 수백 번 수행해야하므로 시간이 많이 걸립니다. 조사해 주셔서 감사합니다.
Out
속성이 C # 키워드 와 동일 하지 않다는 것을 이미 다루었 기 때문에 반대표는 부당 out
합니다.
내에서 언급 한 바와 같이 아니, 거기에 비 초기화 변수가 경고없이 메서드에 전달 될 수 있도록 상응하는 구조 없지만, 질의 응답 지정 <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 .
Object
이므로ByRef x As Integer
매개 변수에 사용할 수 없음 )보다는 문제의 원인 (예 : 유형없이 선언 된 변수)을 가리 킵니다 .