5

と呼ばれるジオメトリ関数にオプションの引数を渡そうとしてoffsetいますが、指定されている場合と指定されていない場合がありますが、C# では次のいずれも実行できません。これを達成する方法はありますか?

  • デフォルトはヌル

    エラー: タイプ '' の値は、タイプ 'System.Drawing.Point' への標準の変換がないため、既定のパラメーターとして使用できません。

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

    エラー: 'offset' の既定のパラメーター値は、コンパイル時の定数でなければなりません

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

1 に答える 1

16

既定値に特別な初期化が必要ない場合は、null 許容型を使用したり、別のオーバーロードを作成したりする必要はありません。default次のキーワードを使用できます。

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

代わりに null 許容型を使用する場合:

public void LayoutRelative(.... Point? offset = null)
{
    if (offset.HasValue)
    {
        DoSomethingWith(offset.Value);
    }
}
于 2012-09-02T11:47:20.423 に答える