二探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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述