2017-10-13 17 views
2

クラスの多くのインスタンスからアクセスされるフィールドを初期化する必要があります。初期化には何らかの計算が必要であり、数百万のインスタンスが存在するため、初期化を一度だけ行う必要があり、変数をすべてのインスタンスで共有してメモリを節約する必要があります。最後に、抽象クラスでこれを実現したいと思います。実行時に抽象クラスのstaticフィールドを初期化する

実行時にCalculateMyVal()で計算される静的変数my_valはどのように初期化されますか?あなたは、静的変数を初期化したい場合は

abstract class MyAbstract 
{ 
    static readonly int my_val; 
    int CalculateMyVal() 
    { 
     int x = 1; 
     // Long Calculation on x 
     return x; 
    } 
} 

答えて

5

あなたはstatic constructorを使用することができます。

public abstract class MyAbstract 
    { 
     static readonly int my_val; 
     static MyAbstract() 
     { 
      my_val = CalculateMyVal(); 
     } 

     static int CalculateMyVal() 
     { 
      int x = 1; 
      // Long Calculation on x 
      return x; 
     } 
    } 
関連する問題