第一行是真的,第二行是假的.htmlOut和s2是StringWriter对象.
bool b = s2.ToString() == htmlOut.ToString();
ret = htmlOut.Equals(s2);
Run Code Online (Sandbox Code Playgroud)
我期望真的是哪个b但是为什么是假的?
StringWriter使用内部StringBuilder写入.StringWriter.ToString()返回由其构建的字符串StringBuilder.
StringWriter不重写,object.Equals()所以StringWriter.Equals()比较两个对象是否是相同的引用,而不是它们的字符串表示是否相等.
StringWriter不会覆盖object.Equals.
htmlOut.Equals(s2);
Run Code Online (Sandbox Code Playgroud)
相当于:
object.ReferenceEquals(htmlOut, s2);
Run Code Online (Sandbox Code Playgroud)