Warum führt das Auslösen einer Ausnahme im Konstruktor zu einer Nullreferenz?

Warum führt das Auslösen einer Ausnahme im Konstruktor zu einer Nullreferenz? Wenn wir zum Beispiel die Codes unterhalb des Werts von teacher ausführen, ist null, während st.teacher nicht ist (ein Teacher-Objekt wird erstellt). Warum?

<code>using System;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main( string[] args )
    {
      Test();
    }

    private static void Test()
    {
      Teacher teacher = null;
      Student st = new Student();
      try
      {
        teacher = new Teacher( "", st );
      }
      catch ( Exception e )
      {
        Console.WriteLine( e.Message );
      }
      Console.WriteLine( ( teacher == null ) );  // output True
      Console.WriteLine( ( st.teacher == null ) );  // output False
    }
  }

  class Teacher
  {
    public string name;
    public Teacher( string name, Student student )
    {
      student.teacher = this;
      if ( name.Length < 5 )
        throw new ArgumentException( "Name must be at least 5 characters long." );
    }
  }

  class Student
  {
    public Teacher teacher;
  }

}
</code>

Antworten auf die Frage(6)

Ihre Antwort auf die Frage