构造函数重载包含已定义具有相同签名的成员
本文关键字:成员 包含 重载 定义 构造函数 | 更新日期: 2023-09-27 18:21:12
public Module(string a, object obj) : this(a, null, obj) { }
public Module(string b, object obj) : this(null, b, obj) { }
这些构造函数重载不起作用
'已经定义了具有相同参数类型的成员'
我环顾四周,意识到我无法在 c# 中做到这一点,但任何人都可以提出解决方法吗?
编辑:感谢您的回答。
在这种情况下,我决定现在就这样做:
public Module(string a, object obj) : this(a, null, obj) { }
public Module(string a, string b, object obj) : this(a, b, obj) {}
因此,如果用户想使用 b... 不出色,但你可以去
参数名称在重载的上下文中毫无意义。我能看出你想做什么,但我不知道为什么。我会完全省去它:
public Module(string a, string b, object obj){}
然后调用 Module
构造函数,根据需要传入null
值。
Module m = new Module(null, "hi", obj);
Module m2 = new Module("bye", null, obj);
我个人使用可选参数:
public Module(object obj, string a = null,string b = null) : this(a, b, obj) { }
这是一篇关于它们是什么以及如何使用它们的文章,请注意,尽管它们仅在VS2010中可用(它们是编译器的一部分而不是语言,因此它们在.net 3.5和4.0中可用(http://msdn.microsoft.com/en-us/library/dd264739.aspx
这是不可能的。应删除这两个构造函数重载。
但是,您可以改用静态工厂方法。确保使用清晰的名称将差异传达给 API 使用者。
static Module CreateA(string a, object o) { return new Module(a, null, o); }
static Module CreateB(string b, object o) { return new Module(null, b, o); }