11

vb.netコンパイラーがエラーがあると不平を言うので、通常の方法でそれを行うかのように、一部の関数またはサブでオプションの色パラメーターを宣言するにはどうすればよいですか (オプションのパラメーターにデフォルトの色を与えることを意味します)。コード。この問題を解決するにはどうすればよいですか。以下のサンプルコード:

Public Shared Function SomeFunction(ByVal iParam As Integer, Optional ByVal oColor As Color = Color.Black)

        End Function

コンパイラは「=Color.Black」を受け入れません

4

4 に答える 4

21

MSDN は、Visual Basic のオプション パラメータについて述べています。

オプションのパラメータごとに、そのパラメータのデフォルト値として定数式を指定する必要があります。式が Nothing と評価される場合、value データ型の既定値がパラメーターの既定値として使用されます。

したがって、その構文を使用することはできません。代わりに、次のようなものを書くことができます

Private Sub Test(a As Integer, Optional c As Color = Nothing)
    If c = Nothing Then
        c = Color.Black ' your default color'
    End If
    ......
End Sub

C# で記述された同じコードは次のとおりです。

private void Test(int a, Color c = default(Color))
{
    if (c.IsEmpty)
        c = Color.Black;
}

C# では、値の型 (Color、Point、Size など) を null 値に対してテストすることはできません。これらの型は null になることはありませんが、型のデフォルト値 (整数の場合は 0 など) があるため、値の型にオプションのパラメーターを渡す必要がある場合は、必要なnew値を持つキーワードを使用して作成できます。デフォルトとして使用するか、defaultキーワードを使用して、フレームワークにタイプのデフォルト値を決定させます。フレームワークに選択させる場合、IsEmptyプロパティは true になります。

于 2013-04-16T19:44:01.577 に答える