2009-07-26 8 views

答えて

6

trueを返します。

htmlOut.Equals(s2); 

は同等です:にStringWriter .Equalsとそう

object.ReferenceEquals(htmlOut, s2); 
+3

正確ではありません。 'htmlOut.Equals(s2);'は 'htmlOut'が' null'のときは 'NullReferenceException'をスローしますが、' object.ReferenceEquals(htmlOut、s2);はそうではありません。 – dtb

2

デフォルトのEqualsの実装では、参照型の参照の等価性と値型のビット単位の等価性をサポートしています。 htmlOutの型は、デフォルト以外のオーバーライドされたEqualsメソッドを持っていますか?

この場合、意味の値が一致するかどうかにかかわらず、異なるインスタンスであると思われます。

9

StringWriterは内部にStringBuilderを書き込みます。 StringWriter.ToString()は、StringBuilderによって構築された文字列を返します。

StringWriterobject.Equals()を無効にしないため、StringWriter.Equals()は、2つのオブジェクトが同じ参照であるかどうかを比較し、文字列表現が等しい場合は比較しません。

+0

==と同じですか? –

+0

'StringWriter'は、デフォルトでequalityを参照する' == '演算子も実装していません。 – dtb

+0

あなたは私の一日を救った! – Dienekes

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

これはにStringWriterのはObject.equalsをオーバーライドしない