Je pensais que je l'ai vu tout mais ... :)C# Generics, comparant 2 chaînes Echoue sauf si spécifié explicitement
je travaillais sur un graphique générique de type chaîne,
Graph<string> graph = new Graph<string>();
le graphique est déclaré avec une contrainte de classe comme ceci:
public class Graph<T> where T : class
Next i remplir le graphique avec des chaînes générées dynamiquement:
for (char t = 'A'; t < 'J'; t++)
{
GraphPrim.Add(t.ToString());
}
Jusqu'à présent, si bon, (Node est une classe interne contenant la valeur d'origine et une liste de références à d'autres noeuds (parce que son graphique))
Maintenant, lorsque je tente de créer des relations entre les différents nœuds, je dois rechercher le bon noeud en vérifiant sa valeur et c'est là que commence l'étrangeté.
Le code suivant, est une copie directe du résultat trouvé dans la fenêtre immidiate après avoir fait quelques tests:
Nodes.First().Value
"A"
Nodes.First().Value == "A"
false
Nodes.First().Value.ToString() == "A"
true
Suis-je quelque chose de totalement disparu ou ne devrait pas Nodes.First() Valeur ==. "A" utilise une méthode de comparaison de chaînes. (Le compilateur JIT a des connaissances sur le type beeing utilisé à l'exécution, et avec cela, ses méthodes supportées, non?). Il me semble que quand on ne spécifie pas explicitement une chaîne, on fera une vérification de référence plutôt qu'un test de chaîne.
Ce serait formidable si quelqu'un pouvait me l'expliquer,
Merci à l'avance!
Quel est le type statique de la propriété 'Value'? –
Etes-vous sûr que la valeur est définie comme suit: public T Value {get; ensemble; } – albertein