【发布时间】:2021-01-07 15:46:06
【问题描述】:
什么是在不调用 ToString().Trim() 的情况下从 StringBuilder 的末尾修剪空白并返回到新的 SB new StringBuilder(sb.ToString().Trim()) 的有效方法。
【问题讨论】:
-
这个问题在于它在标题中使用了非常主观的词“最快”。这听起来像是一场比赛。
-
我知道,因为我是在对自己的问题做了一些回答和几个小时的测试后自己完成的,但我不知道马上做是“好的”
-
NicholasPetersen,@Bobo 的回答如此简单,是因为软件开发中的最佳实践首先是让它发挥作用。然后,如果有任何相关问题,您就知道需要优化的地方。否则,它是过度杀伤优化。我这么说是因为你在这里说话的方式在我看来很傲慢。这并不是因为我们 C# 程序员不关心性能。这是因为我们根据客户的要求专注于重要的事情。一旦它工作,一旦客户需要,我们就会得到性能优化。
-
@WillMarcouiller 我不是故意要听起来傲慢。我确实觉得我们 C# 开发人员对性能和不浪费有合理的关注,在这样的情况下总是被殴打完全,我们应该收到零抨击的情况,但它就是,在这里我们又被打了。注意:1)我花了大约 5 分钟来编写这个函数,2)它是一种扩展方法,可以在剩下的日子里使用,3)在某些情况下,这将是数千倍的性能,但是你就像我提出了一些丑陋的微优化代码一样。
-
@NicholasPetersen 也许提供一些指标可以将其移出主观领域。我同意如果您打算保留
StringBuilder,您的方法会很快。如果您打算在需要修剪之前丢弃它并使用生成的string,那么该字符串上的TrimEnd()会更快。我很想看看您的代码比任何其他实现快 数千倍 倍的情况。
标签: c# stringbuilder