あなたが投稿したコードはコンパイルされていないので、いくつかの可能なバリエーションを作成しました。
1.静的フィールドと静的メソッド
public class Test
{
static string myVar = GetValue();
public Test()
{
}
static string GetValue()
{
return String.Empty;
}
}
この場合、静的フィールドをどこに設定するかは実際には問題ではありません:静的コンストラクター (コードには表示されません) または静的フィールドの初期化として。CLR は、型が AppDomain に読み込まれるときに両方を初期化します。(CLR が最初に静的コンストラクターを呼び出してからすべての静的フィールドを設定する、またはその逆のようなシーケンスがありますが、このシーケンスは制御できません)。
2. コンストラクターでのプロパティの設定
public class Test1
{
string MyVar{get;set;}
public Test1()
{
MyVar = GetValue();
}
string GetValue()
{
return String.Empty;
}
}
種類や用途によって異なります。この特定のケースでは、コンストラクターは軽量であることを意図しているため、おそらくこれを避けるでしょう。重い処理を行う場合は、これInitialize
を適切なエラー処理とtry-catch
ブロックを備えたメソッドに移動することをお勧めします。プロパティを設定するのに手間がかからない場合は、コンストラクターにMyVar = "EMPTY"
.
3. 別のクラスでプロパティを設定する
public class Test
{
public string MyVar{get;set;}
public Test(){ }
public string GetValue()
{
return String.Empty;
}
}
//somewere else
Test t = new Test();
t.MyVar = t.GetValue();
クラスが状態 (プロパティ) を提供し、現在の状態 (GetValue メソッド) を取得する手段であるため、これは少し奇妙に見えます。この場合の 2 つのメンバー (プロパティとメソッド) は、おそらく単一のgetterにマージされます。