zoukankan      html  css  js  c++  java
  • c#的string --> 一个被编译器做特殊处理的引用类型

    String的不变性

    C#里string对象是不变对象(只读),因为一旦创建了该对象,就不能修改该对象的值。有的时候看来似乎修改了,实际是string经过了特殊处理,每次改变值时都会建立一个新的string对象,变量会指向这个新的对象,而原来的还是指向原来的对象

    假设有string str1="abc";那么如果存在有这么一条语句对str1进行再次赋值 如str1="123",那么,此时指向str1的栈的地址并未发生改变,而是在托管堆里重新创建一个新的对象,其值为123,而str1的栈指向托管堆里123的地址,而原先的abc即将会被垃圾回收机制清理掉。所以要想在函数里改变实参的值必须用ref,除对象和集合外。

    结论

    String是引用类型,只是编译器对其做了特殊处理

  • 相关阅读:
    python解析网页
    node.js 爬虫
    c++ split实现
    foldl foldr
    爬虫http header gzip
    命令[10]
    命令[08]
    命令[15]
    命令[13]
    命令[11]
  • 原文地址:https://www.cnblogs.com/yxcn/p/12132202.html
Copyright © 2011-2022 走看看