好的,我有一个静态类,它有两个静态成员,一个字符串和一个布尔值。
公共静态方法根据传入的参数状态为这些成员分配值。
然后调用处理静态成员的私有静态方法。
问题是,虽然布尔值保留了它在公共函数中设置的值,但字符串没有;它默认回到它的初始化值。为什么是这样?
简化代码如下。
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");