草庐IT

StringBuffer与stringBuilder

全部标签

c# - 如何在 .NET 3.5 中再次使 StringBuilder 为空?

我有一个循环,我在其中根据特定条件创建一些字符串值。我确实将StringBuilder对象放在循环之外,每次我在循环中有新行时,我都需要清除该行的StringBuilder附加值。我如何清除那些?StringBuildersb=newStringBuilder();foreach(DataRowrowinrecipientsList.Rows){sb.Length=0;sb.Append("");if(row["needsToActivate"]=="1"){sb.AppendFormat("{0}",getUsersWithoutActivationTemplate());}if(r

c# - 如何在 .NET 3.5 中再次使 StringBuilder 为空?

我有一个循环,我在其中根据特定条件创建一些字符串值。我确实将StringBuilder对象放在循环之外,每次我在循环中有新行时,我都需要清除该行的StringBuilder附加值。我如何清除那些?StringBuildersb=newStringBuilder();foreach(DataRowrowinrecipientsList.Rows){sb.Length=0;sb.Append("");if(row["needsToActivate"]=="1"){sb.AppendFormat("{0}",getUsersWithoutActivationTemplate());}if(r

c# - 为什么 String.Concat 没有针对 StringBuilder.Append 进行优化?

我发现编译器将常量字符串表达式的串联优化为一个字符串。现在只有在运行时才知道字符串的字符串串联,为什么编译器不优化循环中的字符串串联和10个以上字符串的串联,而是使用StringBuilder.Append?我的意思是,这是可能的,对吧?实例化一个StringBuilder并进行每次连接并将其转换为Append()调用。有什么理由可以或不优化?我错过了什么? 最佳答案 肯定的答案必须来自编译器设计团队。但是让我在这里试一试......如果你的问题是,为什么编译器不转这个:strings="";for(inti=0;i进入这个:Str

c# - 为什么 String.Concat 没有针对 StringBuilder.Append 进行优化?

我发现编译器将常量字符串表达式的串联优化为一个字符串。现在只有在运行时才知道字符串的字符串串联,为什么编译器不优化循环中的字符串串联和10个以上字符串的串联,而是使用StringBuilder.Append?我的意思是,这是可能的,对吧?实例化一个StringBuilder并进行每次连接并将其转换为Append()调用。有什么理由可以或不优化?我错过了什么? 最佳答案 肯定的答案必须来自编译器设计团队。但是让我在这里试一试......如果你的问题是,为什么编译器不转这个:strings="";for(inti=0;i进入这个:Str

c# - 在不调用 ToString().Trim() 的情况下从 StringBuilder 的末尾修剪空格并返回到新的 SB

什么是在不调用ToString().Trim()的情况下从StringBuilder的末尾修剪空白并返回到新的SBnewStringBuilder(sb.ToString().Trim())。 最佳答案 下面是一个扩展方法,可以这样调用:sb.TrimEnd();此外,它还返回SB实例,允许您链接其他调用(sb.TrimEnd().AppendLine())。publicstaticStringBuilderTrimEnd(thisStringBuildersb){if(sb==null||sb.Length==0)returnsb

c# - 在不调用 ToString().Trim() 的情况下从 StringBuilder 的末尾修剪空格并返回到新的 SB

什么是在不调用ToString().Trim()的情况下从StringBuilder的末尾修剪空白并返回到新的SBnewStringBuilder(sb.ToString().Trim())。 最佳答案 下面是一个扩展方法,可以这样调用:sb.TrimEnd();此外,它还返回SB实例,允许您链接其他调用(sb.TrimEnd().AppendLine())。publicstaticStringBuilderTrimEnd(thisStringBuildersb){if(sb==null||sb.Length==0)returnsb

C# 运算符 ==、StringBuilder.Equals、Object.Equals 和 Object.ReferenceEquals 之间的区别

我有一个关于Object.Equals和Equals(object)的问题。我的示例代码如下:classProgram{staticvoidMain(string[]args){varsb1=newStringBuilder("Food");varsb2=newStringBuilder("Food");Console.WriteLine(sb1==sb2);Console.WriteLine(sb1.Equals(sb2));Console.WriteLine(Object.Equals(sb1,sb2));Console.WriteLine(Object.ReferenceEqua

C# 运算符 ==、StringBuilder.Equals、Object.Equals 和 Object.ReferenceEquals 之间的区别

我有一个关于Object.Equals和Equals(object)的问题。我的示例代码如下:classProgram{staticvoidMain(string[]args){varsb1=newStringBuilder("Food");varsb2=newStringBuilder("Food");Console.WriteLine(sb1==sb2);Console.WriteLine(sb1.Equals(sb2));Console.WriteLine(Object.Equals(sb1,sb2));Console.WriteLine(Object.ReferenceEqua

c# - 为什么 StringBuilder.AppendLine 不添加带有某些字符串的新行?

我正在尝试使用stringbuilder创建要在文本(而非HTML)电子邮件中使用的字符串正文。但是有些行(我包含动态数据的地方,没有添加新行,但在某些行中,换行符按预期工作。在使用stringbuilder类时我是否遗漏了一些基本的东西,或者是否应该进行一些更基本的过程?在下面的代码中:sbUser.AppendLine("Pleasefindbelowconfirmationofyourregistrationdetails.Ifanyofthesedetailsareincorrect,pleaseemailsomeone@somewhere.com");sbUser.Appen

c# - 为什么 StringBuilder.AppendLine 不添加带有某些字符串的新行?

我正在尝试使用stringbuilder创建要在文本(而非HTML)电子邮件中使用的字符串正文。但是有些行(我包含动态数据的地方,没有添加新行,但在某些行中,换行符按预期工作。在使用stringbuilder类时我是否遗漏了一些基本的东西,或者是否应该进行一些更基本的过程?在下面的代码中:sbUser.AppendLine("Pleasefindbelowconfirmationofyourregistrationdetails.Ifanyofthesedetailsareincorrect,pleaseemailsomeone@somewhere.com");sbUser.Appen