当前位置: 首页 > 编程笔记 >

C#中哪个更好的System.String或System.Text.StringBuilder类?

萧懿轩
2023-03-14
本文向大家介绍C#中哪个更好的System.String或System.Text.StringBuilder类?,包括了C#中哪个更好的System.String或System.Text.StringBuilder类?的使用技巧和注意事项,需要的朋友参考一下

主要区别是StringBuilder是Mutable,String是Immutable。

字符串是不可变的,不可变是指如果您创建字符串对象,则无法对其进行修改,并且它总是在内存中创建字符串类型的新对象。

另一方面,StringBuilder是可变的。意味着,如果我们创建一个字符串生成器对象,那么我们可以执行任何操作,例如插入,替换或追加,而无需每次都创建新实例。它将在内存中的某个位置更新字符串,而不会在内存中创建新空间。

示例

using System;
using System.Text;
class DemoApplication{
   public static void Main(String[] args){
      String systemString = "Hello";
      StringConcat(systemString);
      Console.WriteLine("String Class Result: " + systemString);
      StringBuilder stringBuilderString = new StringBuilder("Hello");
      StringBuilderConcat(stringBuilderString);
      Console.WriteLine("StringBuilder Class Result: " + stringBuilderString);
   }
   public static void StringConcat(String systemString){
      String appendString = " World";
      systemString = String.Concat(systemString, appendString);
   }
   public static void StringBuilderConcat(StringBuilder stringBuilderString){
      stringBuilderString.Append(" World");
   }
}

输出结果

上面示例的输出如下-

String Class Result: Hello
StringBuilder Class Result: Hello World
  • 使用StringConcat方法:在此方法中,我们传递字符串“ Hello”并执行“ systemString = String.Concat(systemString,appendString);”。其中appendString是要串联的“世界”。传递的字符串Main()未更改,这是由于String是不可变的。更改字符串的值会在StringConcat() 存储的新字符串引用中创建另一个对象和systemString 。但是引用systemString inMain()StringConcat()引用不同的字符串。

  • 使用StringBuilderConcathtml" target="_blank">方法:在此方法中,我们传递字符串“ Hello”并执行“ stringBuilderString.Append(“ World”);” 它将字符串的实际值(在Main中)更改为“ Hello World”。这是由于StringBuilder是可变的,因此更改了它的值这一简单事实

 类似资料:
  • 问题内容: 使用哪种更好或更方便: 要么 问题答案: 您是否完全需要类型属性?如果您使用的是HTML5,则不会。否则,是的。HTML 4.01和XHTML 1.0 根据需要指定属性,而HTML5具有可选属性,默认为。HTML5现在得到了广泛的实现,因此,如果您使用HTML5doctype,则是有效且不错的选择。 至于type属性中应该包含的内容,2006年注册的MIME类型旨在替代所有主要浏览器(

  • 当开发一个需要我唯一识别手机用户的应用程序时。我希望得到一些关于使用手机UDID还是IMEI的建议。使用这两种方法有什么优点/缺点吗。如有任何意见,将不胜感激

  • 我是一个初学者,我正在开发一个Android应用程序,它会在一定的延迟(以天为单位)后继续向用户发送短信。我希望用户一旦注册就应该收到短信,不管他是否登录。短信内容和手机号码是从database.So获取的,经过研究,我发现了两种方法。 > 预定执行人服务 报警管理器 问题是,当手机关闭或重新启动时,警报管理器将关闭。预定的礼宾服务也是如此吗?使用执行器服务时,我应该在线程池中使用多少个线程?

  • 问题内容: 我研究了Linux内核,发现对于x86_64体系结构,中断不适用于调用系统调用1。 对于i386体系结构(32位x86用户空间),更可取的是:或者为什么? 我使用Linux内核版本3.4。 脚注1:在某些情况下确实可以在64位代码中工作,但是从不建议这样做。 问题答案: 是在上进入内核模式的默认方法。该指令 在Intel处理器的 32位操作模式下不可用。 是最常用于以32位操作模式调用

  • 问题内容: 我正在研究/比较CXF和Spring-WS的Web服务吗?我需要同时充当WS的提供者和使用者。简而言之,有人告诉我Spring- WS更具可配置性,但是CXF易于启动和运行。这个问题是主观的,但将有助于指导我的研究。 您对这两个框架有什么经验? 您对这两个框架有任何陷阱吗? 您是否发现任何一个提供的有用功能可能是另一个没有提供的功能? 问题答案: 我认为最大的区别是Spring-WS

  • 问题内容: 要在数据库中搜索在任何列“ foo_desc”和“ bar_desc”中同时具有关键字“ foo”和“ bar”的行,我将执行以下操作: 要么 我希望最后一个查询的缺点是性能。 好的一面是,LIKE查询找到了“ MATGA AGAINST”找不到的“ xxfoo”。 哪一个是首选,还是有更好的解决方案? 问题答案: 更新资料 从表开始,表支持。 第一个 要 好得多。在 MyISAM 表