Bonsoir,
Je suis entrain de découvrir String.Intern.
Histoire de me faire la main j'ai repris l'exemple de la MSDN et je l'ai retravaillé et je suis tombé sur un cas que je ne comprend pas.
Code Exemple fonctionnel : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 string s1 = new StringBuilder().Append("My").Append("Test").ToString(); string s2 = String.Intern(s1); if ((object) s1 == (object) s2) Debug.WriteLine("Référence unique !"); else Debug.WriteLine("Référence différente"); // SORTIE : Référence unique !
Ok, ici le Framework a décidé de prendre pour s2 la même référence que s1.
Et maintenant, je vais utiliser 2 StringBuilder !
Ici les références sont différentes, mais pourquoi ??? Pourtant après avoir créé s1 ce dernier se trouve dans mon spool, et dans la logique s2 devrait donc utiliser la référence de s1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 string s1 = new StringBuilder().Append("My").Append("Test").ToString(); string s2 = String.Intern(new StringBuilder().Append("My").Append("Test").ToString()); if ((object) s1 == (object) s2) Debug.WriteLine("Référence unique !"); else Debug.WriteLine("Référence différente"); // SORTIE : Référence différente
Qu'ai-je loupé dans l'histoire ?
Merci
Etanne
Partager