OK J'ai une classe statique qui a deux membres statiques, une chaîne et un booléen.
Une méthode statique publique affecte des valeurs à ces membres en fonction de l'état des paramètres passés.Le membre statique ne conserve pas la valeur affectée
Une méthode statique privée est ensuite appelée pour traiter les membres statiques. Le problème est que, bien que le booléen conserve la valeur à laquelle il est défini dans la fonction publique, la chaîne ne le fait pas; il revient par défaut à sa valeur initialisée. Pourquoi est-ce?
Le code simplifié est ci-dessous.
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");
Vous êtes sûr d'être correctement affecté à la méthode Send (string). Avez-vous oublié de mentionner quoi que ce soit lors de la simplification du code tge? –
Pourquoi est-ce une classe statique du tout? – devio
Devio- peut-être que ça ne devrait pas être, je continue d'apprendre. Cela semblait être la solution la plus élégante et ne nécessitait pas la création d'un objet. Le nom de la classe n'est pas très bon et doit changer - MessageHandler peut-être parce qu'il les transmet. MessageHandler.Send (Message). – Kildareflare