1. 程式人生 > >各種引用方式提高string的操作效率

各種引用方式提高string的操作效率

提高 public ring 引用 true 例子 set 引用類型 探討

眾所周知string的真身是具備值類型操作性質的引用類型,在本文中我們不去探討它的區別,為了方便描述,統一把string作為值類型來理解。

例子都基於:

    class Data
    {
        public int Id { get; set; }

        public string Name;

        public string Title { get; set; }
    }

    var obj = new Data{ Id = 1, Name = "1", Title = "data-1"};

回顧傳統基礎認識,如果一個對象中封裝了值類型與引用類型,針對該對象的操作會統一把該對象的所有屬性、字段、等等都作為引用類型對待。

            var obj2 = obj;//傳遞引用

            obj2.Id = 2;
            obj2.Name = "2";
            obj2.Title = "title-2";

            Console.WriteLine($"obj1: {obj.Id}, {obj.Name}, {obj.Title}");
            Console.WriteLine($"obj2: {obj2.Id}, {obj2.Name}, {obj2.Title}");

          //輸出:
            obj1: 2, 2, title-2
            obj2: 2, 2, title-2            

根據以上的原理,天然的傳遞對象引用就可以間接解決以引用的方式操作對象內部各種成員:

        static void fixProperty(Data source)
        {
            if(source.Name == "john snow") source.Name = "你也配?知道北境在哪嗎?";
            if(source.Title == "我想去胡建") source.Title = "龜兒子你上過幾年學"; 
            if(source.Id == 1) source.Id = 2;
        }

            obj.Id = 1;
            obj.Name = "john snow";
            obj.Title = "我想去胡建";
            
            fixProperty(obj);
            Console.WriteLine($"obj: {obj.Id}, {obj.Name}, {obj.Title}");

            //得到輸出:obj: 2, 你也配?知道北境在哪嗎?, 龜兒子你上過幾年學
            //對象內部作為值類型的int和string都已經得到改變

各種引用方式提高string的操作效率