C#中的String和StringBuilder类之间的区别

String和StringBuilder这两个类都用于管理C#中的字符串,但它们仍然有一些区别,在本文中,我们将学习它们之间的区别是什么?

C#字符串类

字符串类本质上是不可变的或只读的。这意味着String类的对象是只读的,不能修改String对象的值。它在内存中创建一个字符串类型的新对象。

C#中的字符串类示例

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String s = "India ";

            //在这里,它创建新对象而不是修改旧对象
            s += "is the best ";
            s += "country";

            Console.WriteLine(s);
        }
    }
}

输出结果

India is the best country

在该程序中,对象最初分配了值“ India”。但是,当我们将值连接到对象时,它实际上在内存中创建了新对象。

C#StringBuilder类

本质上,StringBuilder类是可变的。这意味着可以修改StringBuilder类的对象,我们可以对该对象执行与字符串操作相关的操作,如插入,删除,附加等。它不会创建新对象;使用StringBuilder类的对象所做的更改始终会修改相同的内存区域。

C#中的StringBuilder类示例

using System;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder s = new StringBuilder("India ");

            //在这里,它创建新对象而不是修改旧对象
            s.Append("is the best ");
            s.Remove(0,5);
            s.Insert(0, "Bharat");
            
            Console.WriteLine(s);

            s.Replace("Bharat", "Hindustan");
            Console.WriteLine(s);
        }
    }
}

输出结果

Bharat is the best
Hindustan is the best