《我的编程笔记》C#篇-C#中string与stringbuilder的区别

C#中String和StringBuilder的区别 String和StringBuilder的区别 String类型对象的特点: 1.它是引用类型,在堆上分配内存 2.运算时会产生一个新的实例 3.String 对象一旦生成不可改变(Immutable) 4.定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用) 设置StringBuilder容量 StringBuilder设置容量的意义在于,当修改StringBu... 阅读详情

using System;
using System.Collections.Generic;
using System.Text;

namespace 字符串
{
    class Program
    {
        static void Main( string[] args )
        {
            //字符串频繁分配内存演示(不推荐)
            //以下代码将字符串全总向后移一个值,原来的字符串将会被替换成新加密后的.
            //但是效率低下,greetingTxt这个string类型的对象,每次 += 时其实就是将原来的对象删除引用,从而指向新的引用对象.
            //这样在循环中,多次对string重新分配内存,堆中将会产生大量的废弃数据等待回收..

            string greetingTxt = "Hello from all the guys atWrox Press. ZZZAAA";

            for ( int i = 'z' ; i >= 'a' ; i-- )
            {
                char old = ( char )i;
                char new1 = ( char ) (i + 1);

                greetingTxt = greetingTxt.Replace( old , new1 );
            }


            for ( int i = 'Z' ; i >= 'A' ; i-- )
            {
                char old = ( char )i;
                char new1 = ( char )( i + 1 );

                greetingTxt = greetingTxt.Replace( old , new1 );
            }

            Console.WriteLine( greetingTxt );
            Console.WriteLine( "StringBuilder----------------------------------" );

            //StringBuilder 演示
            //StringBuilder类只支持一般的字符串删除增加功能,不像String那么的多,但是效率极高
            //String通常分配堆空间时,是刚刚好的大小.而StringBuilder一般会比需要的内存分配的多一些
            //开发人员也可以指定StringBuilder要分配多少内存
            // 2个重要属性 Length 字符串的实际长度  Capacity 字符串存储单元的最大长度(也就是最多可以占多少内存)
            //这样,字符串的替换的效率就提高了,因为可以在StringBuilder分配的空余空间中进行操作.
            //但是,删除增加字符串时,仍有一定影响,因为这样会涉及到存储大小的变
            //通常如果增加一个字符串,超出本对象大小时,对象内存会自动翻版,以保证所需

            //第二个参数是指字符对象最大数,通常应设一个尽量可能大的数.以确保不会重新扩展内存
            StringBuilder sbStr = new StringBuilder( "Hello from all the guys atWrox Press.  " , 150 );
            Console.WriteLine( "Hello from all the guys atWrox Press".Length + "字符串大小"); 
            //很明显字符串大小是36,而我们给sb对象分配了150个字符的大小空间,这样我们假定我们append的新字符不会超出150-36
            //那么sb对象将不会重新分配内存,我们的效率也就提高了
            sbStr.Append( " Hello Aladdin!");
            Console.WriteLine( sbStr );

            //但是多次频繁替换文件,才能真正用到sb所带来的效率,同样是上面的加密小例,我们用sb对象执行

            for ( int i = 'z' ; i >= 'a' ; i-- )
            {
                char old = ( char )i;
                char new1 = ( char )( i + 1 );

                sbStr = sbStr.Replace( old , new1 );
            }


            for ( int i = 'Z' ; i >= 'A' ; i-- )
            {
                char old = ( char )i;
                char new1 = ( char )( i + 1 );

                sbStr = sbStr.Replace( old , new1 );
            }

            Console.WriteLine( sbStr + "加密后" );
            //以上代码使用了StringBuilder类的Replace方法,他不用在过程中复制字符串,效率会很高。

            //StringBuilder类中除了Length 与 Capacity两个重要属性之外,还有一个MaxCapacity
            //MaxCapacity是指最大的字符个数,一般默认是与int类型大小一样。int.MaxValue!
            //不过可以显示的给定他的值,但是如果给定的最大值比指定的字符串空间大小小的话,会有一个异常
            //例:我们把MaxCapacity给定为100,而Capacity是150,这时会有一个异常

            StringBuilder sb = new StringBuilder( 100 ,50 );


            //总结: 一般StringBuilder用于字符串的操作,而;String用与字符串的展示!

 

            Console.ReadLine();
        }
    }
}

 

C# String与StringBuilder 1.什么时候用String?什么时候用StringBuilder? 字符串一旦创建就不可修改大小,所以对字符串添加或删除操作比较频繁的话。那就不要用String而用StringBuilder。 例如:   String a1 = "abc";  //分配固定的内存大小             a1+="def";  //销毁原先的数据再来分配,代价比较昂贵   阅读详情

相关推荐

【C# 知识点】String和StringBuilder的区别

参考资料:  -《C#从入门到精通(第四版)》清华大学出版社  - 资料来源-木土家的田童:C# String与string的区别 啊啊啊 之前一直不知道还有这回事,翻了一下书才发现。优化也很重要,,, 正题:  在C#中,String对象是不可变的,每次对String对象进行改变时,都会创建一个新的String对象同时会对这个对象分配新的空间。想想以前那种在for循环...

Rioer的博客 1572

c#中的string和StringBuilder的区别

string和StringBuilder的区别 解析c#中的string和StringBuilder的区别,只有非常了解后我们才能更好的编程和灵活使用。 区别 1、类 String 表示字符串, 比如“ abc ”。 类 StringBuilder 表示可改变大小的字符序列( sequence of characters ),多个字符组成字符序列,字符序列和字符串是同一个意思。二者的区别在于, String 类型的字符串是常量,字符串创建出来后不允许修改。而 StringBuilder 类型的字符串是可修改

opencv220的博客 3715

C# 中string、StringBuffer和stringbuilder区别

在 C# 中,string和是用于处理字符串的两种不同类型。它们之间的主要区别在于如何处理和操作字符串。stringstringstringstringstringstring因此,如果你需要频繁地对字符串进行修改和操作,建议使用,因为它可以提供更好的性能。如果字符串不需要修改,或者只需要进行少量操作,那么使用string是更简单和合适的选择。

标准都是留给不爱的人,爱的本质是自由意志的沉沦 1126

【C#知识点详解】String与StringBuilder的区别

话不多说直接开始。 String和StringBuilder的异同 相同点在于String和StringBuilder表示的都是连续序列的字符串,只是他们的内部实现方式有所不同。 不同点在于String是不可变类型,String值的每一次改变都是在创建新的对象。举例: string s = "I am"; s = "I am Sky"; 我们知道String在C#中是引用类型,第一行S...

Backyard Garden Of Games 1668

【Unity 04】C# StringBuilder类及其使用方法

PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为天更。 笔记内容均为 自己理解,不保证每个都对。 String类: String不能被修改,每次使用String类时都要在内存中重新申请一个新的内存空间,若程序中需要用到大量的字符串修改操作,则会导致内存空间的大量消耗,所以引入StringBuilder类 StringBuilder类: 获得StringBui...

不积跬步,无以至千里 5284

AXI总线的Burst Type以及地址计算 | WRAP到底是怎么一回事?

AXI总线的transaction是burst-based的,因此有必要好好研究一下不同burst type的工作原理。此处略过burst的定义以及burst size、burst length等信号的介绍。

qiuzhongyu123的博客 2万+

C# String与StringBuilder的区别和使用方法

无论是Java还C#或者其他语言 对于string变量应该都是非常熟悉的了 他是一个引用类型 因为他的不可以变性 并不是在原有的内存中添加数据 而是在堆中重新的开辟空间 这就导致处理大量数据时效率低下 口说无凭,咱们测试一下 测试: String: 往str里添加10万个数字 Stopwatch s = new Stopwatch();//软件运行计时器 string str = ""; s.Start();//开始计时器 for (int i = 0; i <= 100000

生产队的驴 1万+

上机笔试题目:取出指定条件二维数组的子数组

取出指定条件二维数组的子数组: 1)传入参数为: 参数一:String[][]sArray2字符串二维数组 参数二:Stringkey字符串 参数三:StringkeyFormat含匹配符的字符串,如下:%0-%1,其中%x含义如为:一维数据列序号为x的值。 keyFormat 可以为 %0-%1-%2,%0-%3-%8-%x...... 例子如下...

91奔跑的蜗牛 636

C#的字符串之String类与StringBuilder类区别于适用场景

C#中的字符串类String与StringBuilder有什么区别?对应的适用场景是什么?

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1367

SPICE仿真软件:Ngspice_(2).安装与配置

在Netlist文件中直接定义模型。V1 1 0 5R1 2 0 1k* Analysis库文件中可以包含多种电路元件模型和参数。

kkchenjj的博客 1587

【花雕学编程】Arduino动手做(249)---ESP32+GC9A01之播放GIF的空战锁定动画

摘要: 本实验基于ESP32开发板,驱动1.28寸圆形IPS彩色TFT显示屏(GC9A01驱动,240×240分辨率),通过SPI接口实现GIF动画播放。利用TFT_eSPI和AnimatedGIF库,成功加载并循环播放预置的科幻风格GIF动画(如HUD界面、X翼战机等)。代码实现了GIF解码、逐帧渲染及动态显示功能,通过串口调试监控运行状态。实验验证了该显示屏在动态图像显示中的流畅性,为嵌入式图形应用提供了实用方案,适用于智能穿戴、交互设备等场景。 关键词: ESP32、GC9A01、圆形TFT、GIF播

雕爷学编程 492

C#中的string和StringBuilder

C#中的string和StringBuilder

qq_36361527的博客 3308

全局–局部傅里叶神经算子(GL-FNO):原理、严格推导与 PINN 混合策略

本文提出了一种全局-局部傅里叶神经算子(GL-FNO)及其与物理信息神经网络(PINN)的结合方法。主要内容包括: 架构设计:GL-FNO包含两个分支 - 全局分支处理低频结构,使用下采样输入;局部分支处理高频细节,使用全分辨率输入。两分支通过自适应门控机制融合。 理论分析:证明了GL-FNO在"低频全局+高频局部"任务上的优势,给出了误差分解和复杂度分析,并推导了与PINN结合时的渐进一致性条件。 实现方法:采用频谱微分计算物理残差,推导了完整的训练流程,包括数据损失与物理损失的联合优

VectorShift的博客 1334

C#基础,String、StringBuffer与StringBuilder之间区别

C#基础 Main()主方法(函数),程序的入口点,执行这个函数就是执行应用程序. 一个C#程序中有且仅有一个Main()方法,而且该方法必须是静态的(static),而且该方法必须包含在一个类中,而且M必须大写. Main()主方法也包含一对花括号{ },在花括号间写要完成功能的代码. C#中其它的一般方法也同样是要包含一对花括号的. //注释一行代码 /**/注释多行代码 标识符是一串字符,在...

weixin_44588754的博客 3718

C语言实现惯导更新算法(机械编排)

四元数可用于描述刚体转动或姿态变换,与方向余弦阵相比,表达简洁。四元数是一个包含四个元素的列向量,列向量的第一个元素表示刚体围绕旋转轴转过的角度大小,其余3个元素代表了旋转轴的方向。

十八与她的博客 1730

TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate

这篇被 ICLR 2026 接收的论文提出了一种名为TurboQuant的全新在线向量量化(Vector Quantization, VQ)算法。该研究的核心目标是解决大语言模型(LLM)在长上下文推理时面临的 KV Cache 显存消耗瓶颈,以及大规模向量数据库在近似最近邻检索中的存储与延迟问题。有别于现有技术,TurboQuant 是一种无需任何校准数据、无需训练的在线算法(Data-oblivious)。

c_cpp_csharp的专栏 120

C# 面试问题高级:031 - String 和 StringBuilder 有什么区别 ?

在C#中,String和StringBuilder是两种用于处理字符串的主要类型。尽管它们都用于表示文本数据,但在实现方式、性能和适用场景上有着显著的区别。理解这两者的差异对于编写高效且正确的代码至关重要。

caifox的博客 1593

百度AI架构师亲授:Agentic智能体在教育领域的落地(附个性化学习案例)

当我们谈论“教育智能化”时,我们真正需要的不是“更聪明的工具”,而是“能懂人的伙伴”——一个能像优秀教师那样主动观察、精准判断、动态调整的“数字助手”。Agentic智能体(智能体)正是这样的存在:它具备“自主性”(主动决策)、“反应性”(感知环境)、“目标导向”(聚焦学习目标)和“社会性”(与人/其他智能体协作),完美匹配教育场景中“个性化、动态化、协同化”的核心需求。本文将从底层逻辑到工程实现为什么Agentic是教育AI的“下一站”?(痛点与价值)Agentic智能体的核心架构是什么?

AI天才研究院 356

C#中String,StringBuffer,StringBuilder 之间区别

在字符串处理中C#提供了String、StringBuffer、StringBuilder三个类。那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下: 1、  三者在执行速度方面的比较:StringBuilder >StringBuffer > String String一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。而StringBuffer类

tml_237615629的专栏 7179

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C#中StringBuilder类 StringBulider与string区别

StringBuilder是什么 StringBuilder类来自于System.Text命名空间的一个对象,在使用的时候先得对StringBuilder进行初始化,在初始化的时候可以指定初始字符串以及初始长度。 创建StringBuilder类的新实例 通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder 类的新实例。 设置容量和长度 虽然StringBuilder对象是...

dust__的博客 651

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# String和Stringbuilder的区别

C# 中String和 Stringbuilder的区别 String 对象是不可改变的。每次使用 String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会,在需要对字符串执行重复修改的情况下,创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,

米刀文 932

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

面试系列之——C#中String和StringBuilder的区别

    上周去面试一家单位的.net工程师,面试官问我C#中String和StringBuilder的区别,虽然在平时的项目中经常使用String类,也见过StringBuilder来,但是却没有深究,所以一下子不知道该怎么回答,下来后在翻了下书,又在网上找了点相关资料,在此将其做一总结。     String对象是不可改变的。每次使用System.String类中的方法之一或者是进行运算时(如赋值、拼接等),都要在内存中创建一个新的字符串对象,这就需要为该新对象分配内存空间,而StringBuilder则

宇宙锋 1399

C#中string,String,StringBuilder的学习笔记

关于C#中的 string ,String,StringBuilder 初学C#时,面对很多语法,尤其是在学习C#之前接触并做过几个Java项目的时候,觉得有些语法和Java相似,有些也不尽相同,但大体上还是有些相似,且C#作为真正入门编程语言,面对刚接触的第一段代码,我便有很多疑问,老师告诉我,他不会告诉我太多,只能让我在不断写的过程中慢慢理解,所以在此之前,因为自己的无知造成误会,以及对他人...

weixin_39070579的博客 1432

C#——StringBuilder和string的区别与用法

在C#中,StringBuilder和string有一些重要的区别,主要体现在内存管理和性能上。

sunyao1314的博客 714

C#中String与StringBuild的区别

前言:本博文,主要讲解C#String与StringBuild的区别,其他内容,请参考: 文章目录一、两者区别概述二、通过例子分析下三、深入认识StringBuilder四、回看两个类型 一、两者区别概述 首先,我们要明确,String是引用类型,一旦赋值,值是不可改变的。每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新

路虽远,行则必至! 1869
上一篇: 《我的编程笔记》C#篇-listview点击空白行,高亮不消失
下一篇: HDFS-1
baskbeast
博客等级 码龄14年 19粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值