2009-07-26 7 views

Répondre

6

StringWriter ne remplace pas Object.equals.

htmlOut.Equals(s2); 

équivaut à:

object.ReferenceEquals(htmlOut, s2); 
+3

Pas exactement. 'htmlOut.Equals (s2);' lancera une 'NullReferenceException' si' htmlOut' est 'null' alors que' object.ReferenceEquals (htmlOut, s2); 'ne le fera pas. – dtb

2

L'implémentation par défaut de Equals prend en charge l'égalité de référence pour les types de référence et l'égalité bit à bit pour les types de valeur. Est-ce que le type de htmlOut a une méthode Equals surchargée par défaut?

Dans ce cas, il semble que ce ne soit pas le cas, et cela vous indique qu'il s'agit d'instances différentes, que leurs valeurs sémantiques correspondent ou non.

9

StringWriter utilise un StringBuilder interne pour écrire. StringWriter.ToString() renvoie la chaîne créée par StringBuilder.

ne remplace pas object.Equals() alors StringWriter.Equals() compare si les deux objets sont la même référence, et non si leurs représentations de chaînes sont égales.

+0

donc avec StringWriter Equals est le même que ==? –

+0

'StringWriter' n'implémente pas l'opérateur' == 'qui par défaut fait référence à l'égalité, donc oui. – dtb

+0

Vous avez sauvé ma journée! – Dienekes

1
htmlOut.ToString().Equals(s2.ToString()); 

ce retourne vrai

Questions connexes