2012-09-02 9 views
5

offsetというジオメトリ関数にオプションの引数を渡そうとしていますが、これは指定されていても指定されていなくてもかまいませんが、C#では以下のことはできません。これを達成する方法はありますか?デフォルトとしてヌルPointとRectangleをオプションのパラメータとして使用できないのはなぜですか?

  • エラー:型「の値が」と入力するための標準的な変換が存在しないため、デフォルトパラメータとして使用することはできません「System.Drawing.Point」

    public void LayoutRelative(.... Point offset = null) {} 
    
  • デフォルトとして空

    エラー:デフォルト「オフセット」のパラメータ値は、デフォルトの値は、特別な初期化を必要としない場合は、NULL可能タイプを使用するか、別のオーバーロードを作成する必要はありません定数

    public void LayoutRelative(.... Point offset = Point.Empty) {} 
    

答えて

11

コンパイル時でなければなりません。あなたの代わりにNULL可能タイプを使用したい場合は

public void LayoutRelative(.... Point offset = default(Point)) {} 

: あなたはdefaultキーワードを使用することができます

public void LayoutRelative(.... Point? offset = null) 
{ 
    if (offset.HasValue) 
    { 
     DoSomethingWith(offset.Value); 
    } 
} 
+0

をどのようにNULL値可能な方法を使用すると、私はあなたの答えを受け入れるだろう私を表示します。彼の答えを削除したばかりの男。 –

+0

ありがとうございました。 –

関連する問題