3

MSDNから:

すべてのArgumentExceptionには、この例外の原因となるパラメーターの名前を含める必要があります。

私の質問:プロパティセッターがをスローするArgumentException必要がある場合、セッターのパラメーター名(デフォルト:)valueまたはプロパティの名前を指定する必要がありますか?

例:

    Private _myProperty As String
    Public Property MyProperty As String
        Get
            Return _myProperty
        End Get
        Set(value As String)
            If String.IsNullOrEmpty(value) Then
                ' what I've been doing for the last 2 years
                Throw New ArgumentNullException("value", "value cannot be empty")

                ' what I think I should be doing instead
                Throw New ArgumentNullException("MyProperty", "value cannot be empty")
            End If
            _myProperty = value
        End Set
    End Property

それが理にかなっていることを願っています。どう思いますか?

編集

別の解決策は、より意味のある名前に変更valueし、それをの値として使用することだと思いますparamName。しかし、どういうわけか、それは正しいことではないようです。

4

1 に答える 1

4

MSDNの標準例外タイプのキャッチとスローの例によると、パラメータ名として「value」を設定し続ける必要があります。

プロパティセッターの暗黙的な値パラメーターの名前にはvalueを使用してください。

だからそれは大丈夫です:

Throw New ArgumentNullException("value", "value cannot be empty")
于 2013-02-27T21:52:25.060 に答える