私は2つの静的メンバー、文字列とブール値を持つ静的クラスを持っています。
public staticメソッドは、渡されたパラメータの状態に基づいてこれらのメンバーに値を割り当てます。静的メンバーは割り当てられた値を保持しません
次に、静的メンバーを処理するプライベート静的メソッドが呼び出されます。
ブール値はパブリック関数で設定されている値を保持しますが、文字列は保持しません。デフォルトで初期化された値に戻ります。どうしてこれなの?
簡略化されたコードは次のとおりです。
static class MessageHandler
{
private static String m_messageToSend = String.Empty;
private static bool m_requiresACK = false;
public static void Send(String message)
{
//formatting etc (actual method sets more fields)
m_messageToSend = message;
m_requiresACK = true;
Send();
}
private void static Send()
{
SendMessageDelegate sendDelegate = DoSend;
//At this point m_requiresACK remains true but m_messageToSend does not
//hold value of message; it is empty.
IAsyncResult ar = sendDelegate.BeginInvoke(m_messageToSend, m_requiresACK);
//rest of function
}
}
//some other class
MessageHandler.Send("Hello");
Send(string)メソッドで正しく割り当てられていることを確認してください。あなたはtgeコードを単純化するときに何か言及することを忘れましたか? –
なぜこれは静的なクラスですか? – devio
Devio-多分それはあってはならない、私はまだ学んでいる。最も洗練されたソリューションのように見え、オブジェクトを作成する必要はありませんでした。クラス名はそれほど良くなく、変更する必要があります - MessageHandlerはおそらくそれらを転送してからです。 MessageHandler.Send(Message)。 – Kildareflare