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ですか?
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ですか?
これは空のクラスで私にとってうまくコンパイルされます。他の行やパラメータクラスの定義に誤りがあると思います。
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
これは私がそれらのパラメータを必要としないオーバーロードを作成することをお勧めしたいあなたが使用したいパターンである場合:
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
C#アプローチ。特にVB.NETでは必要ありません – serhio
いいえ、これは間違いなくVBのアプローチです。 C#では、refパラメータにnull値を指定することは決してありません。私はオプションのパラメータの考え方にはあまり気にしなかったので、私はより多くの負荷に傾いています。あなたは本当により明確で洗練されたコードで終わります。 –
@serhio:実際にはオプションのパラメータがエラーの原因かもしれません。 –
あなたは、ほぼ間違いなく 'ByVal'を使用する必要があります。 – SLaks
@SLaks:しかしByRefが必要です – serhio
@serhio:なぜですか?あなたはほとんど間違いなくそうします。 – SLaks