6

Env .: C# 6, Visual Studio 2015 CTP 6Statische Konstruktor arbeitet nicht für structs

Gegeben das folgende Beispiel:

namespace StaticCTOR 
{ 
    struct SavingsAccount 
    { 
     // static members 

     public static double currInterestRate = 0.04; 

     static SavingsAccount() 
     { 
      currInterestRate = 0.06; 
      Console.WriteLine("static ctor of SavingsAccount"); 
     } 
     // 

     public double Balance; 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      SavingsAccount s1 = new SavingsAccount(); 

      s1.Balance = 10000; 

      Console.WriteLine("The balance of my account is \{s1.Balance}"); 

      Console.ReadKey(); 
     } 
    } 

}

Die statische Ctor ist nicht für die ausgeführten irgendein Grund. Wenn ich SavingsAccount als eine Klasse anstelle einer Struktur deklariere, funktioniert es gut.

+0

Schauen Sie sich [diesen Link] (http://blogs.msdn.com/b/csharpfaq/archive/2014/11/20/new-features-in-c-6.aspx) an, um parameterlose Konstruktoren einzurichten in Strukturen. –

Antwort

13

Der statische Konstruktor wird nicht ausgeführt, da Sie keine statischen Member der Struktur verwenden.

Wenn Sie das statische Element zu verwenden currInterestRate, dann wird der statische Konstruktor wird zuerst genannt:

Console.WriteLine(SavingsAccount.currInterestRate); 

Ausgang:

static ctor of SavingsAccount 
0,06 

Wenn Sie eine Klasse verwenden, wird der statische Konstruktor vor aufgerufen werden Die Instanz wird erstellt. Beim Aufrufen eines Konstruktors für eine Struktur wird keine Instanz erstellt, sodass der statische Konstruktor nicht ausgelöst wird.

+0

@vcsjones Welches statische Member verwendet eine Instance im Beispiel? – Matthew

+0

@Matthew ah Mist, ich habe den Abschnitt über statische Klassen gelesen. Ich wollte den Teil zitieren, der sagte: "Die Ausführung eines statischen Konstruktors wird ausgelöst, indem das erste der folgenden Ereignisse innerhalb einer Anwendungsdomäne auftritt: Eine Instanz der Klasse wird erstellt." aber das ist keine Klasse. – vcsjones

Verwandte Themen