-2

基本的に、私たちが持っているのはこれです:

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(); }
}

そして、例外はスローされません。それは本当にかなり混乱しています!私は何かが足りないのですか?

4

1 に答える 1

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(); }
    }
于 2012-12-13T17:56:49.270 に答える