Tho*_*fer 1 c# generics parameters constructor derived-class
为什么这不可能?在使用constructor-parameter实例化"DerivedClass"时,我得到以下编译器错误:
'GenericParameterizedConstructor.DerivedClass'不包含带有1个参数的构造函数
但是调用一个非常相似的方法可行.
为什么?
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>
{
}
Run Code Online (Sandbox Code Playgroud)
构造函数不是继承的 - 它就像那样简单.DerivedClass包含一个构造函数 - 编译器默认提供的公共无参数构造函数,因为您尚未指定任何构造函数.
请注意,这与泛型无关.如果BaseClass不是通用的,你会看到同样的事情.
尽管提供构造函数很容易DerivedClass:
public class DerivedClass : BaseClass<String>
{
public DerivedClass() : base()
{
}
public DerivedClass(string value) : base(value)
{
}
}
Run Code Online (Sandbox Code Playgroud)