二探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。


posted @   李只蚊  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示