2011-01-21 8 views
3
Public Function Foo(ByRef a As AClass, _ 
        Optional ByRef b As BClass = Nothing, _ 
        Optional ByRef c As CClass = Nothing) As XClass 

오류 : 선택적 매개 변수가 디폴트 값을 지정해야합니다.선택 ByRef - VB.NET에서 잘못 되었습니까?

이 (가) Das입니까?

+0

당신은 거의 확실히'ByVal'를 사용해야합니다. – SLaks

+0

@SLaks :하지만 ByRef가 필요합니다 – serhio

+1

@serhio : 왜? 당신은 거의 확실하게하지 않습니다. – SLaks

답변

3

이 클래스는 빈 클래스를 사용하여 정상적으로 컴파일됩니다. 다른 줄에서 오류가 있거나 매개 변수 클래스를 정의했다고 생각하는 것 같습니다. 이 당신은 내가 그 매개 변수를 필요로하지 않습니다 과부하를 만드는 권하고 싶습니다 사용하려는 패턴 인 경우

Public Class Class1 

    Public Function Foo(ByRef a As aclass, _ 
         Optional ByRef b As bclass = Nothing, _ 
         Optional ByRef c As cclass = Nothing) As xclass 
     Return Nothing 
    End Function 

End Class 

Public Class aclass  
End Class 

Public Class bclass  
End Class 

Public Class cclass  
End Class 

Public Class xclass 
End Class 
+0

나는 비슷한 코드를 얻으려는 사람이 빨리 문을 닫았다 고 말할 만하지 만 비슷한 실험을 수행하고 아무런 문제가 없었습니다. –

+0

이유가 있습니다 ... – serhio

+0

방금 ​​ByRef b as bclass As bclass = Nothing' (반복) 질문 : 죄송합니다. – serhio

1

는 :

Public Function Foo(ByRef a As AClass) As XClass 
    Return Foo(a, Nothing, Nothing) 
End Function 
Public Function Foo(ByRef a As AClass, ByRef b As BClass, ByRef c As CClass) As XClass 
    '//Return XClass here 
End Function 
+0

C# 접근. 특히 VB.NET에서는 필요하지 않습니다. – serhio

+1

아니요, 이것은 확실히 VB 방식입니다. C#에서는 null 매개 변수를 ref 매개 변수에 제공하지 않습니다. 필자는 선택 매개 변수 개념에 신경을 많이 쓰지 않아 과부하에 더 관심이 많습니다. 정말로 더 명확하고 깨끗한 코드로 끝내게됩니다. –

+0

@serhio : 실제로 선택적 매개 변수가 오류의 원인 일 수 있습니다. –

관련 문제