1

IXnaDrawXNA で自分自身を描画する方法を決定するために、アセット用の小さなインターフェイスを作成しました。インターフェイスは単一のメソッドで構成されています

interface IXnaDraw
{
    void Draw(SpriteBatch SB);
}

Microsoft.Xna.Framework.Colorコンテキストの変更があり、アセットに別の配色を適用する必要があるため、 -object を渡したいと思いました。

nullableのように Color-objectを使用しようとしました

void Draw(SpriteBatch SB, Color? Col = null);

default-parameter が受け入れられません。クラスが上記のインターフェイスを実装していないというエラーが表示されます。私も次のようなものを使用しようとしました

void Draw(SpriteBatch SB, Color Col = Color.White);

これにより、次のエラーが呼び出されます

値はコンパイル時に既知である必要があります。

どうすれば実装を修正し、デフォルト パラメータを取得できますか? ありがとうございました

4

2 に答える 2

2

私は4.0以上の.NETを想定しています

void Draw(SpriteBatch SB, Color Col = default(Color));

また

void Draw(SpriteBatch SB, [Optional]Color Col);
于 2013-08-15T15:53:22.437 に答える
1

2 番目のパラメーターを受け入れる場合は、2 つのパラメーターを受け取るメソッドの 2 番目のオーバーロードを作成する必要があります。
インターフェイスの実装は正確に一致する必要があります。CLR はオプションのパラメーターを認識しません。

必要に応じて、単一パラメーターのバージョンで他のオーバーロードを呼び出すようにすることができます。

于 2013-08-15T14:56:08.940 に答える