source

ByVal/ByRef를 더 이상 표시할 필요가 없는 이유는 무엇입니까?

nicesource 2023. 5. 29. 10:59
반응형

ByVal/ByRef를 더 이상 표시할 필요가 없는 이유는 무엇입니까?

방금 Visual Studio 2010 서비스 팩(Windows Update에 제안됨)을 설치했는데, "인텔리센스"에서 새로운 기능을 확인할 수 있습니다. 이 기능은 다음과 같습니다.Function또는SubVB.NET에서는 매개 변수를 자동으로 완료하지 않습니다.ByRef또는ByVal...

이 옵션을 이전 상태로 되돌릴 수 있는 방법이 있습니까?

지정하지 않은 경우ByX어떤 것이 기본적으로 사용됩니까?(항상 그런 것처럼 보입니다.ByRef)

이 게시물은 당신의 질문을 다루는 것 같습니다.

http://msmvps.com/blogs/carlosq/archive/2011/03/15/vs-2010-sp1-changing-quot-byval-quot-vb-net-code-editor-experience.aspx

그래서 아니요, 예전의 행동을 얻을 수 있는 방법은 없습니다.지금부터ByVal는 기본값이며 메서드 매개 변수에 자동으로 추가되지 않습니다.

제 생각에 이것은 VB.NET을 C#과 조금 더 일관되게 만들고 불필요한 "잡음"을 방지하기 때문에 좋은 결정입니다(이미 충분히 장황합니다).

이전 동작:

Private Sub test(ByVal test As String)
End Sub

새로운 행동

Private Sub test(test As String)
End Sub

Tim은 사용자가 질문한 내용을 직접 다루었지만, 사용자 정의 클래스와 같은 참조 유형 변수를 사용하면 값이 전달되더라도 유지되는 인스턴스 속성 등을 변경할 수 있습니다.그러나 전체 개체를 변경할 수는 없습니다.그래서 당신이 참고로 기본값을 지불하지 않은 것처럼 보인 것일 수도대체로

Public Sub (Something As WhateverClass) 
  Something = New WhateverClass 'will result in no changes when outside this method

  Something.Property1 = "Test"  'will result in an updated property when outside this method
End Sub

MSDN에서:

참조 유형의 값은 메모리의 다른 위치에 있는 데이터에 대한 포인터입니다.즉, 참조 유형을 값으로 전달할 때 프로시저 코드는 기본 요소 자체에 액세스할 수 없더라도 기본 요소의 데이터에 대한 포인터를 가지고 있습니다.예를 들어 요소가 배열 변수인 경우 프로시저 코드는 변수 자체에 액세스할 수 없지만 배열 멤버에 액세스할 수 있습니다.

VBA로 루틴을 전송할 때 주의하십시오. 기본값은ByRef(예: 이 페이지 하단의 위대한 칩 Pearson의 "파라미터 전달의 기본 방법" 참조).그것은 지저분할 수 있습니다.

언급URL : https://stackoverflow.com/questions/9207620/why-is-it-not-necessary-to-indicate-byval-byref-anymore

반응형