2017-10-13 66 views
2

我需要初始化將從類的許多實例中訪問的字段。初始化需要一些計算,並且會有數百萬個實例,所以我需要初始化只發生一次,並且要在所有實例之間共享變量以節省內存。最後,我想在抽象類中做到這一點。在運行時初始化抽象類中的靜態字段

如何在運行時初始化由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; 
     } 
    }