当前位置:  开发笔记 > 编程语言 > 正文

如何在.NET 3.5中再次使StringBuilder空?

如何解决《如何在.NET3.5中再次使StringBuilder空?》经验,为你挑选了2个好方法。

我有一个循环,我根据某些条件创建一些字符串值.我确实将StringBuilder对象放在循环之外,每次我在循环中有新行时,我需要清除此行的StringBuilder附加值.

我如何清除这些?

        StringBuilder sb = new StringBuilder();

        foreach (DataRow row in recipientsList.Rows)
        {
            sb.Length = 0;
            sb.Append("
    "); if (row["needsToActivate"] == "1") { sb.AppendFormat("
  • {0}
  • ", getUsersWithoutActivationTemplate()); } if (row["needsToEnterSite"] == "1") { sb.AppendFormat("
  • {0}
  • ", getUsersWithoutEnteringWebsiteForTwoWeeksTemplate()); } if (row["needsPicture"] == "1") { sb.AppendFormat("
  • {0}
  • ", getUsersWithoutPicturesTemplate()); } if (row["needsText"] == "1") { sb.AppendFormat("
  • {0}
  • ", getUsersWithoutTextTemplate()); } if (row["needsCharacteristic"] == "1") { sb.AppendFormat("
  • {0}
  • ", getUsersWithoutCharateristicsTemplate()); } if (row["needsHobby"] == "1") { sb.AppendFormat("
  • {0}
  • ", getUsersWithoutHobbiesTemplate()); } sb.Append("
"); }

代码接受答案;



1> Alex K...:

你可以简单地;

sb.Length = 0;


当你使用很长的字符串时,这不是最好的主意.它可能导致OOM异常.MSDN提供了更多解释:https://social.msdn.microsoft.com/Forums/en-US/db04ba8c-e13e-4d41-89a2-f5601ec3e0ae/outofmemoryexception-setting-stringbuilder-length-to-0?forum=vbgeneral
你可以使用这个:sb.Remove(0,sb.Length);

2> PhilPursglov..:

StringBuilder.Clear(); 是你想要的.


这仅适用于.Net 4. .Net <= 3.5需要使用`sb.Length = 0;`
.NET 3.5对不起!
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有