1

これに頭をぶつけて。次のようなクラスのフィールドを持つ静的メソッドがあります。

public MyClass
{
   private static string m_myString;

   public static MyClass()
   {
       m_myString = "hello world";
   }

   public static void MyUsefulMethod(Foo bar)
   {
       DoStuffTo(bar);
   }

}

デバッグモードでは問題はありませんが、リリースするとすぐにTypeInitializationExceptionsが発生します。

4

5 に答える 5

0

あなたは言うべきではありません:

private static string m_myString = "hello world";
于 2009-03-20T01:42:17.393 に答える
0

これは多くの場合、静的コンストラクターが実行される順序が原因です。

ところで:非静的クラスのパブリック静的コンストラクターは良い考えではないと思います。プライベートにしてみてください。

于 2009-03-20T01:44:48.197 に答える
0

、または他のクラスでTypeInitializationException発生しますか?MyClass例外がスローされたときにスタックトレースを取得しますか?

表示した小さなコードはエラーを示していませんが、Barクラスやその他の関連する可能性のあるコードは表示されません。

于 2009-03-20T03:40:13.957 に答える
0

@jeffamaphone ..はい、私のコードサンプルにタイプミスがあります。

@Mitch Wheat: ええ、それがどのように見えるかです。悪いことに、静的コンストラクターにアクセス修飾子を追加することはできません。

とにかく、私は今それを動作させています。このように見えます。サンプルコードの混乱をお詫びします。

public MyClass
{
   private static Object m_object;

   static MyClass()
   {
      m_object = new Object();
   }  

   public static void MyUsefulMethod(Foo bar)
  {
      DoStuffTo(bar);
   }

}

そして今、人生は再び良いものになりました。理由がわかればもっと嬉しいのに。

返信ありがとうございます。

于 2009-03-20T01:59:59.377 に答える