基本上,我们得到的是:
public class A {
...
public A() { ... }
...
}
public class B : A {
...
public B() : base()
{ throw new Exception(); }
...
}
但是:
public class Test<T>
where T : A, new()
{
public void doStuff() { B b = new B(); }
}
并没有抛出异常。这真的很混乱!我错过了什么吗?
答案 0 :(得分:1)
以下代码按预期引发异常。我想你没有正确使用你的Test类,因为你没有发布代码。
public MainWindow()
{
InitializeComponent();
Test<B> myTest = new Test<B>();
myTest.doStuff(); // throws exception in B()
}
public class A
{
public A() { }
}
public class B : A
{
public B()
: base()
{
throw new Exception();
}
}
public class Test<T> where T : A, new()
{
// I modified this because the intent is to use T correct?
public void doStuff() { T test = new T(); }
}