J'essaie d'ajouter ce qui équivaudrait à un dictionnaire global à un code C#. Je sais que les globals n'existent pas techniquement en C#, donc j'utilise une classe statique sans espace de noms. Mon code ressemble à ceciC# Problème d'étendue avec la classe "global"
public static class GlobalClass
{
public static Dictionary<string,string> Foo = new Dictionary<string,string>();
public static void Dictionary_Load()
{
//Load Dictionary from database.
// When I break at the end of this function I see the Dictionary has data in it.
}
public static string Dictionary_Lookup(input)
{
if(Foo.ContainsKey(input))
{
string return_string = Foo[input];
return return_string;
}else
{
return "ERROR";
}
}
}
Dans une autre forme que j'appelle cette classe en tant que tel:
namespace MainFormNamespace
{
public partial class : MainForm : Form
{
....
DictionaryLoad();
string test = DictionaryLookup("Bar") //I know "Bar" is in the dictionary
.....
}
}
Quand je lance ce que je mets un point d'arrêt avant le retour de Dictionary_Load et à l'instruction if Dictionary_Lookup . Quand je regarde le dictionnaire à la fin de Dictionary_Load, il est plein. Quand je retourne à MainForm, le dictionnaire est vide. Lorsque je casse à l'instruction if dans Dictionary_Lookup, le dictionnaire est également vide. J'ai essayé de mettre les deux classes dans le même espace de noms, et cela n'a pas fonctionné. Y a-t-il quelque chose qui ne va pas dans ma portée? Est-ce que je manque quelque chose d'évident ici?
'' Dictionary_Lookup' et DictionaryLookup' ne sont pas la même chose. – mjwills
Utilisez également 'TryGetValue' plutôt que' ContainsKey' et '[]'. Veuillez également inclure ** tout ** code qui lit ou écrit à 'Foo'. – mjwills
Fournissez un programme qui * reproduit réellement le problème * et qui ne comporte pas de fautes de frappe évidentes comme des barres de soulignement et des points-virgules manquants. Rendez votre programme plus simple et plus simple jusqu'à ce que le problème disparaisse - ce qui devrait vous dire où il se trouvait - ou si vous avez quelque chose qui correspond à une page que quelqu'un peut vous aider. Voir https://stackoverflow.com/help/mcve pour obtenir de l'aide. –