程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 細說引用類型string StringBuilder class的特點

細說引用類型string StringBuilder class的特點

編輯:C#入門知識

string是引用類型,但它也有一些值類型的特征。

string傳值還是傳引用,C#的string聲明是一個String類,當然是傳引用。不過,之所以有這個疑惑,多數是因為這個情況:
string a = "aaa";
string b = a;
b = "bbb";

這時候輸出結果,結果發現a的值還沒有變,分析一下:

string a = "aaa"; // a-->new String("aaa")
string b = a; // b-->a, 傳引用
b = "bbb"; // b-->new String("bbb"), 傳引用,b用new string指向了一個新的字符串,a並沒有變。

StringBuilder 是引用類型,如果需要對字符串進行操作的,建議用StringBuilder 。例如你需要不斷的接拼字符串。必須引用System.Text

String 對象是不可改變的。每次使用 System.String 類中的方法之一時,都要在內存中創建一個新的字符串對象,這就需要為該新對象分配新的空間。在需要對字符串執行重復修改的情況下,與創建新的 String 對象相關的系統開銷可能會非常昂貴。如果要修改字符串而不創建新的對象,則可以使用 System.Text.StringBuilder 類。例如,當在一個循環中將許多字符串連接在一起時,使用 StringBuilder 類可以提升性能。

class引用為型,無論怎麼傳值,都是傳送引用

下面看一個極簡單的例子:
 

namespace TCP
{
    public class Program
    {
        static void Main(string[] args)
        {
            string code = "C#";
            User user = new User("Li","23");
            StringBuilder str = new StringBuilder();            
            str.Append("A");            
            editUser(user, str,code);

            Console.WriteLine(code);
            Console.WriteLine(str);
            Console.WriteLine(user.name);
            Console.WriteLine(user.age);
            Console.ReadLine();

        }

        public static void editUser(User user, StringBuilder str,string code)
        {
            code = "VB.NET";
            str = str.Remove(0, 1);
            str.Append("E");
            user.name = "LEE";
            user.age = "10";
        }
    }

    public class User
    {
        private string _name;
        private string _age;
        public User(string name, string age)
       &n

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved