1. ホーム
  2. c#

[解決済み] 以下のメソッドまたはプロパティの間で呼び出しが曖昧である。

2022-02-03 17:17:29

質問

次の2つのコトルがあるとします。

public SomeClass(string a, Color? c = null, Font d = null)
        {
            // ...
        }

public SomeClass(string a, Font c = null, Color? d = null)
        {
            // ...
        }

~と私はこうしています。

SomeClass sc = new SomeClass("Lorem ipsum");

次のように表示されます。 "エラー1 以下のメソッドまたはプロパティの間で呼び出しがあいまいです [...]"。

最終的な結果は同じなので、どちらを参照しても問題ないように思えますが(少なくともこの特定のケースでは、私にとっては今それがすべてです)、これを回避するためのオプションは何でしょうか?

EDIT 1: オルトマン:簡略化した例です。

を書けるようにしたいだけです。

[...] new SomeClass("Lorem", Color.Green)

ではなく

[...] new SomeClass("Lorem", null, Color.Green)

解決方法は?

どちらのコンストラクタも同じ数の引数を取りますが、その順番が異なります。 2 つのコンストラクタの引数にデフォルト値を指定したため、2 番目の引数が指定されない場合、コンパイラは 2 つのオーバーロードを区別できません。

既存のコンストラクタを削除して、以下のように置き換えることをお勧めします。

public SomeClass(string a, Color? color, Font font)
{
    // constructor implementation
}

public SomeClass(string a) : this(a, null, null) {}
public SomeClass(string a, Color color) : this(a, color, null) {}
public SomeClass(string a, Font font) : this(a, null, font) {}