zoukankan      html  css  js  c++  java
  • c# string

    string最为显著的一个特点就是它具有恒定不变性:我们一旦创建了一个string,在managed heap 上为他分配了一块连续的内存空间,我们将不能以任何方式对这个string进行修改使之变长、变短、改变格式。所有对这个string进行各项操作(比如调用ToUpper获得大写格式的string)而返回的string,实际上另一个重新创建的string,其本身并不会产生任何变化。 
    string   对象称为不可变的(只读),因为一旦创建了该对象,就不能修改该对象的值。有的时候看来似乎修改了,实际是string经过了特殊处理,每次改变值时都会建立一个新的string对象,变量会指向这个新的对象,而原来的还是指向原来的对象,所以不会改变。这也是string效率低下的原因。

     class Program
        {
            string str = "class.str";
            private int i = 0;
            static void StringConvert(string str)
            {
                str = "string being converted";
            }
            static void StringConvert(Program c)
            {
                c.str = "string being converted";
            }
            static void Add(int i)
            {
                i++;
            }
            static void AddWithRef(ref int i)
            {
                i++;
            }
            static void Main(string[] args)
            {
                int i1 = 10;
                int i2 = 20;
                string str = "str";
                Program c = new Program();
                Add(i1);
                AddWithRef(ref i2);
                Add(c.i);
                StringConvert(str);
                StringConvert(c);
    
                Console.WriteLine(i1);
                Console.WriteLine(i2);
                Console.WriteLine(c.i);
                Console.WriteLine(str);
                Console.WriteLine(c.str);
                Console.ReadLine();
            }
        }
    
      输出: 10   21   0     str    string being converted
    using System.Runtime.InteropServices;
        using System;
        namespace ConsolePrototype
        {
            public class A
            {
                public string str1 = "aaa";
                public string str2 = "aaa";
            }
            public class B
            {
                public string str1 = "aaa";
            }
            class Program
            {
                static void Main(string[] args)
                {
                    A a = new A();
                    GCHandle hander = GCHandle.Alloc(a.str1);
                    var pin = GCHandle.ToIntPtr(hander);
    
                    GCHandle hander2 = GCHandle.Alloc(a.str2);
                    var pin2 = GCHandle.ToIntPtr(hander);
    
                    B b = new B();
                    GCHandle hander3 = GCHandle.Alloc(b.str1);
                    var pin3 = GCHandle.ToIntPtr(hander3);
    
                    Console.WriteLine(pin);
                    Console.WriteLine(pin2);
                    Console.WriteLine(pin3);
                    Console.ReadLine();
                }
            }
        }

  • 相关阅读:
    空余时间
    日期的获取
    checkbox的样式
    表格
    v-for的一些小demo
    进程在与Windows Process Activation Service通信时出现严重错误 w3wp.exe错误
    c# 一些DateTime.Now的常用语法
    wcf错误 无法激活服务,因为它不支持 ASP.NET 兼容性
    c# 未能加载文件或程序集 相关原因
    IIS配置使网站访问速度提升
  • 原文地址:https://www.cnblogs.com/chengjunwei/p/7490742.html
Copyright © 2011-2022 走看看