我正在使用C#(Unity3D is based on Mono)开发Unity3D游戏。
我写了一个抽象类 CompositeConnector 来声明抽象方法。其中一个, DrawContent 有一个默认的字符串参数。
public abstract class CompositeConnector : ScriptableObject
{
// ...
public abstract void DrawContent(GUISkin skin, float zoom_factor, string control_name = "");
// ...
}
从CompositeConnector继承的其他类也声明了一个默认参数。
public class InputTextConnector : CompositeConnector
{
// ...
public override void DrawContent(GUISkin skin, float zoom_factor, string control_name = "")
{
// ...
}
// ...
}
当我在没有最新参数的情况下调用此方法时出现问题。
// Produces the error.
_input_connector.DrawContent(_skin, _zoom_factor);
// No error.
_input_connector.DrawContent(_skin, _zoom_factor, "");
我收到错误,例如(不是在运行时):
未处理的异常:System.ArgumentException:密钥重复时 添加:Void DrawContent(UnityEngine.GUISkin,Single,System.String)
正如您所看到的,如果我设置参数并且不依赖于默认值,我就不会收到错误。我尝试了很多种组合,但我找到的唯一解决方案是不使用默认参数。
这是一个已知问题吗?我想在这里做错事吗?