为什么这是不可能的?
使用构造函数参数实例化“DerivedClass”时出现以下编译器错误:
“GenericParameterizedConstructor.DerivedClass”不包含采用 1 个参数的构造函数
但调用一个非常相似的方法是可行的。
Why?
class Program
{
static void Main(string[] args)
{
// This one produces a compile error
// DerivedClass cls = new DerivedClass("Some value");
// This one works;
DerivedClass cls2 = new DerivedClass();
cls2.SomeMethod("Some value");
}
}
public class BaseClass<T>
{
internal T Value;
public BaseClass()
{
}
public BaseClass(T value)
{
this.Value = value;
}
public void SomeMethod(T value)
{
this.Value = value;
}
}
public class DerivedClass : BaseClass<String>
{
}
构造函数不是继承的——就这么简单。DerivedClass
包含一个构造函数 - 编译器默认提供的公共无参数构造函数,因为您没有指定任何构造函数。
请注意,这有nothing与泛型有关。如果你会看到同样的事情BaseClass
不是通用的。
这很容易provide构造函数DerivedClass
though:
public class DerivedClass : BaseClass<String>
{
public DerivedClass() : base()
{
}
public DerivedClass(string value) : base(value)
{
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)