0

ParamArrays を受け入れる関数に取り組んでいました。ただし、少なくとも 1 つの要素と最大 5 つの要素が必要です。配列の境界を定義しようとしましたが、エラーが発生しましArray bounds cannot appear in type specifiersた。

では、どうすればこれを行うことができますか?

4

2 に答える 2

1

では、どうすればこれを行うことができますか?

できません。少なくとも静的ではありません。あなたができる唯一のことは、関数の内部をチェックしArgumentException、間違った数の引数に遭遇したときに例外 (例えば ) をスローすることです。

ただし、API 設計に関しては、これは奇妙に思えます。ParamArrayaによって十分に反映されていない制限があるように見えるため、 a はあなたの場合に最適なソリューションではないと思いますParamArray

于 2015-03-23T10:41:19.147 に答える
0

あなたの質問の文脈がわからないので、関数の署名が必要な契約を尊重するようにするためにできることをすることをお勧めします。例えば:

Public Sub Grover (cheese1 as Cheese, Optional cheese2 as Cheese = Nothing, Optional cheese3 as Cheese = Nothing, Optional cheese4 as Cheese = Nothing, Optional cheese5 as Cheese = Nothing)
    If cheese1 Is Nothing Then
        'throw
    End If

    For Each cheese in {cheese1, cheese2, cheese3, cheese4, cheese5}
        If cheese IsNot Nothing Then
            cheese.Snozzle()
        End If

        'or, in VB14 (as of Visual Studio 2015)
        cheese?.Snozzle()
    Next
End Sub
于 2015-03-24T04:12:39.100 に答える