C# 可为空的颜色-指定默认值

C# 可为空的颜色-指定默认值,c#,interface,xna,nullable,default-value,C#,Interface,Xna,Nullable,Default Value,我已经为我的资产创建了一个小界面IXnaDraw,以确定如何在XNA中绘制它们自己。该接口由单个方法组成 interface IXnaDraw { void Draw(SpriteBatch SB); } 我想传递一个Microsoft.Xna.Framework.Color-对象,因为我更改了上下文,这需要对资产应用不同的颜色方案 我尝试使用一个可空的颜色对象,如中所示 void Draw(SpriteBatch SB, Color? Col = null); 默认参数不被接受,我

我已经为我的资产创建了一个小界面
IXnaDraw
,以确定如何在XNA中绘制它们自己。该接口由单个方法组成

interface IXnaDraw
{
    void Draw(SpriteBatch SB);
}
我想传递一个
Microsoft.Xna.Framework.Color
-对象,因为我更改了上下文,这需要对资产应用不同的颜色方案

我尝试使用一个
可空的
颜色对象,如中所示

void Draw(SpriteBatch SB, Color? Col = null);
默认参数不被接受,我得到的错误是我的类没有实现所述接口。我也试着用一些东西,比如

void Draw(SpriteBatch SB, Color Col = Color.White);
这将调用一个错误声明

该值必须在编译时已知


如何修复实现并使用默认参数?谢谢

如果要接受第二个参数,则需要为该方法创建第二个重载,该重载包含两个参数。
接口实现必须完全匹配;CLR无法识别可选参数


如果愿意,可以让单参数版本调用另一个重载。

我假设是4.0或更高版本的.NET

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


这正是我需要的!虽然花了一分钟的时间才把
Optional
变成
System.Runtime.Interop.OptionalAttribute
这正是我需要的!
void Draw(SpriteBatch SB, [Optional]Color Col);