string 和StringBuilder的引用的區別

1.  string a=“a”;

     a+=“b”;

     a+=“c”;

      .......

     String 對象串聯操作總是用現有字符串和新數據創建新的對象。

     StringBuilder 對象維護一個緩衝區,以便容納新數據的串聯。如果有足夠的空間,新數據將被追加到緩衝區的末尾;否則,將分配一個新的、更大的緩衝區,原始緩衝區中的數據被複制到新的緩衝區,然後將新數據追加到新的緩衝區。

    所以不要使用上面的方式追加字符串,因爲每次都開闢新的內存空間,用StringBuilder更好。

2. StringBuilder爲引用類型(Class也是,所以對一個方法傳遞類作爲參數,對其修改的會在方法外體現出來,無需ref和out)

    class Program
    {
        static void Main(string[] args)
        {
            String strName; ;
            strName = "aobama";
            StringBuilder sbName = new StringBuilder();
            sbName.Append("shiyuantailang");
            changeStr(strName);
            changeStr(sbName);
            Console.WriteLine(strName);                        // aobama
            Console.WriteLine(sbName.ToString());              // shiyuantailang,aobama
        }
        static void changeStr(String str)
        {
            str = "ladeng";
        }
        static void changeStr(StringBuilder sb)
        {
            sb.Append(",aobama");
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章