zoukankan      html  css  js  c++  java
  • 二探String类型

    引用C#本质论的一句话:字符串是不可变的


     

    之前就已经看了这本书的前几章基础的东西,那时候觉得这句话没什么特别地方,于是就选择性掠过了。现在再一次回过头来


    再读一遍的时候,又品味到了另一种深层的意思。


          什么是不可改变的,就是String的变量当你在初始化它的时候,它就是这个值,这个内存地址单元里面放的就是这个值,永远


    不会改变。下面看这段代码:


     

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace test
    {
    class Program
    {
    static void Main(string[] args)
    {
    string str1 = "aaa";
    str1.ToUpper();
    Console.WriteLine(str1);
    Console.ReadKey();
    }
    }
    }

          结果大家觉得是什么??是AAA???如果这样想的话就是没有理解开头的那句话了。答案仍然是aaa。

    str1.ToUpper();这段代码,只会在内存中开辟一段空间存储AAA,但是他并没有将这个值赋给str1,如果需要改变str1的值,则

    str1=str1.ToUpper();这样才可以,但是这时候str1已经不是指向aaa这个值的内存地址了,而是指向AAA的内存单元。

          总的来说,每次更新str1的值,也就是重新开辟一段空间存储新的字符串,之后把这个字符串的地址赋给str1。


  • 相关阅读:
    P4097 [HEOI2013]Segment 李超线段树
    P3592 [POI2015]MYJ
    P3698 [CQOI2017]小Q的棋盘
    P4098 [HEOI2013]ALO 可持久化01Trie
    P2331 [SCOI2005]最大子矩阵
    P4099 [HEOI2013]SAO
    loj #6032. 「雅礼集训 2017 Day2」水箱 线段树优化DP转移
    CF765F Souvenirs 离线+线段树+主席树
    CF1097D Makoto and a Blackboard
    loj #6570. 毛毛虫计数
  • 原文地址:https://www.cnblogs.com/cookies9/p/1744762.html
Copyright © 2011-2022 走看看