Ign*_*cia 2 .net c# generics constructor compiler-errors
如果有以下课程:
class A
{
public A(int number)
{
}
}
Run Code Online (Sandbox Code Playgroud)
那么为什么我不能拥有像这样的泛型类:
class B<ParameterClass> where ParameterClass : A
{
public B()
{
ParameterClass a = new ParameterClass(1);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个CS0304,编译器说我没有new()限制,但我只想调用一个在A上定义的构造函数,因为ParameterClass总是一个A,编译器可以确定A(int数)构造函数将始终存在.我只是不明白为什么会有这种限制.
仅仅因为声明了构造函数A并不意味着它将被声明ParameterClass.例如:
public class Bad : A
{
public Bad(string x) : base(x.Length)
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在我使用:
var b = new B<Bad>();
Run Code Online (Sandbox Code Playgroud)
你期望做什么?你写它的方式,如果它是有效的我会期望它试图调用new Bad(1),这肯定是无效的.
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |