好的我有一個靜態類,它有兩個靜態成員,一個字符串和一個布爾值。
公共靜態方法根據傳入參數的狀態爲這些成員分配值。靜態成員不保留指定的值
然後調用一個私有靜態方法來處理靜態成員。
問題是,雖然布爾值保留它在公共函數中設置的值,但字符串不會;它默認回到它的初始值。爲什麼是這樣?
簡化代碼如下。
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(字符串)方法中正確分配。簡化tge代碼時你忘了提及什麼嗎? – 2009-07-17 12:29:18
爲什麼這是一個靜態類? – devio 2009-07-17 12:35:50
德維奧 - 也許它不應該,我還在學習。這似乎是最優雅的解決方案,並不需要創建對象。類名稱不是很好,需要更改 - MessageHandler可能是因爲它將它轉發。 MessageHandler.Send(消息)。 – Kildareflare 2009-07-17 13:08:56