gpt4 book ai didi

c# - 隐式和显式 StringBuilder.ToString() 方法调用之间有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 19:21:30 26 4
gpt4 key购买 nike

我刚刚写了一个小的单元测试,其中我使用了 StringBuilder() .

var stringBuilder = new StringBuilder();
stringBuilder.Append("Foo");

Assert.AreEqual(stringBuilder, "Foo");

此测试将失败。

Expected: <Foo>
But was: "Foo"

但是如果我将 Assert 更改为

Assert.AreEqual(stringBuilder.ToString(), "Foo");

测试将通过。

那么,ToString() 的隐式调用和显式调用有什么区别?方法?或者/这些括号 ( <>) 代表什么?

最佳答案

在您的第一个示例中,您正在测试您的 StringBuilder 是否instance 等于字符串,这将失败。

在您的第二个中,您正在测试对 ToString() 的调用结果是否正确。 (这是一个字符串)等于另一个字符串。


方括号 (<>) 是 NUnits 的方式来指示它获得了一个非字符串对象,但是为了显示消息,NUnit 调用 ToString()在那个物体上。

Expected: <Foo> But was: "Foo"

所以 <Foo>是一个返回 Foo 的对象调用 ToString() ,而 "Foo"只是一个String

MSTest 会向您显示不同的消息,这样会更清楚:

Expected:<Foo (System.Text.StringBuilder)>. Actual:<Foo (System.String)>.   

关于c# - 隐式和显式 StringBuilder.ToString() 方法调用之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com