何时使用 StringBuilder? [复制]

2023-12-13

可能的重复:
字符串与 StringBuilder

我刚刚重温了一些我用来学习 VB.NET 的书籍。我不确定我是否已经理解了这一点,了解 StringBuilder 是如何/什么的。

使用指导是什么?如果您要连接 2 个字符串还是 50 个字符串,最好使用它吗?

或者当字符串总长度大于128个字符时?

或者,每当您使用它来将字符串添加在一起时,您是否会看到性能优势?

在这种情况下,使用 StringBuilder 实例构建 SQL 语句比使用 StringBuilder 实例更好string.format("Select * from x where y = {0}",1)?

我总是觉得声明另一个变量并包含名称空间对于小字符串连接没有好处,但我现在不确定。

抱歉,很多文档告诉您应该使用什么,但没有告诉您什么是最好的。


我有一个关于这个主题的文章。总之(从页面底部复制):

  • 当您在一个重要的循环中进行连接时,一定要使用 StringBuilder - 特别是如果您不确定(在编译时)将在循环中进行多少次迭代。例如,一次读取文件一个字符,使用 += 运算符构建字符串可能是性能自杀。
  • 当您可以(可读地)指定需要在一条语句中连接的所有内容时,一定要使用连接运算符。 (如果您有一个要连接的数组,请考虑显式调用 String.Concat - 如果需要分隔符,请考虑调用 String.Join。)
  • 不要害怕将文字分成几个串联的位 - 结果将是相同的。例如,您可以通过将长文字分成几行来提高可读性,而不会损害性能。
  • 如果您需要连接的中间结果而不是提供下一次连接迭代,那么 StringBuilder 将无法帮助您。例如,如果您从名字和姓氏建立一个全名,然后在末尾添加第三条信息(也许是昵称),那么只有在不这样做的情况下,您才会从使用 StringBuilder 中受益需要 (名字 + 姓氏) 字符串用于其他目的(就像我们在创建 Person 对象的示例中所做的那样)。
  • 如果您只需要进行一些串联,并且您确实想在单独的语句中进行这些操作,那么采用哪种方式并不重要。哪种方式更有效取决于连接的数量、所涉及的字符串的大小以及连接的顺序。如果您确实认为该代码段是性能瓶颈,请对它进行分析或基准测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 StringBuilder? [复制] 的相关文章

  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • Swift:检查 UISearchBar.text 是否包含 url

    如何检查 UISearchBar text 是否包含 URL 我想做这样的事情 if searchBar text NSTextCheckingType Link 但我收到错误 String is not convertible to NS
  • 通过 VB.NET 创建/编辑文本文件

    如何在 VB NET 中编写以下算法的代码 Procedure logfile if C textfile txt exist then open the textfile else create the textfile end if g
  • 拆分/标记化/扫描字符串并注意引号

    Java中是否有默认 简单的方法来分割字符串 但要注意引号或其他符号 例如 给定以下文本 There s a man that live next door in my neighborhood and he gets me down Ob
  • 两个 pandas 列的字符串连接

    我有一个关注者DataFrame from pandas import df DataFrame foo a b c bar 1 2 3 它看起来像这样 bar foo 0 1 a 1 2 b 2 3 c 现在我想要这样的东西 bar 0
  • 什么是仅匹配空字符串的正则表达式?

    有很多关于正则表达式的帖子来匹配潜在地空字符串 但我找不到任何提供正则表达式的字符串only匹配一个空字符串 我知道 将匹配任何行的开头并且 将匹配任何行的结尾以及字符串的结尾 像这样 匹配的内容远不止空字符串 如 n foobar n n
  • 奇怪的跨线程 UI 错误

    我正在编写一个 WinForms 应用程序 它有两种模式 控制台或 GUI 同一解决方案中的三个项目 一个用于控制台应用程序 一个用于 UI 表单 第三个用于保存两个界面也将连接的逻辑 控制台应用程序运行绝对流畅 保存用户选择的模型 它有一
  • 静态字符串文字表?

    在 C 中创建全局静态字符串表的正确方法是什么 我所说的 全局 是指 可从包含标头的任何文件中使用 但不是某些运行时创建的单一对象的一部分 我所说的 静态 是指 尽可能少地设置运行时间 只读内存页中的数据 每个应用程序只有 1 个数据实例
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • 正则表达式查找字符串中的整数和小数

    我有一个像这样的字符串 str1 12 ounces str2 1 5 ounces chopped 我想从字符串中获取金额 无论它是否是小数 12 或 1 5 然后获取紧邻的前一个测量值 盎司 我能够使用一个非常基本的正则表达式来获取测量
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • XSL字符串多重替换功能

    如何让这个函数进行多重替换 经验 替换aaa with 111并替换bbb with 222 etc
  • 清洁琴弦的更好方法?

    我正在使用这种方法来清理字符串 public static string CleanString string dirtyString string removeChars lt gt string result dirtyString f
  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • Javascript:删除字符串标点符号并拆分成单词?

    抱歉 如果之前有人问过这个问题 但我正在尝试从这样的字符串中获取单词数组 Exclamation Question Quotes Apostrophe Wasn t Couldn t Didn t 该数组应该看起来像这样 exclamati
  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • 为什么 re.findall 在查找字符串中的三元组项时不具体。 Python

    所以我有四行代码 seq ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA OR 0 re findall r ATG 9 TAA TAG TGA seq 首先让我解释一下我正在尝试做什么 如果这令人困惑
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • Outlook 加载项,无法读取未定义的属性“BeginRequestEventArgs”

    我使用 Visual Studio 开发了 Outlook 插件 我的插件有一个按钮 用于填充会议邀请正文中的详细信息并添加所需的与会者 这在 99 的情况下都有效 但是 时不时地它会给我下面的 JavaScript 错误 Uncaught
  • 如何展平解析树并存储在字符串中以进行进一步的字符串操作 python nltk

    我正在尝试从树结构中获取扁平树 如下所示 我想将整个树放在一个字符串中 就像没有检测到坏树错误一样 S NP SBJ NP DT The JJ high JJ seven day PP IN of NP DT the CD 400 NNS

随机推荐

  • 如何选择sql复杂查询where Condition And or [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我的桌子是 ID ATTRID VALSTR 1771373 1 1234 1771373 3 510 1771373 7 2016 1771373 8 05 1777623 3 50
  • codeIgniter使用mysql_real_escape_string()代替。数据库连接问题

    我在带有数据库的服务器上安装了代码点火器 我想在我的 mac 上运行相同的数据库 我使用 MAMP 并将项目文件夹复制到 htdocs 中 但出现此错误 请你帮帮我好吗 ErrorException 8192 mysql escape st
  • Angular 2:无法绑定到“ngModel”,因为它不是“input”的已知属性

    我正在尝试在 Angular 2 中实现动态表单 我向动态表单添加了删除和取消等附加功能 我已经遵循了这个文档 https angular io docs ts latest cookbook dynamic form html 我对代码做
  • 无法在 azure 机器学习服务工作区中注册 ONNX 模型

    我尝试以两种不同的方式将 ONNX 模型注册到 Azure 机器学习服务工作区 但遇到无法解决的错误 第一种方法 通过 Jupyter Notebook 和 python 脚本 model Model register model path
  • Matplotlib 类似于 matlab trisurf

    长话短说 我想用 python 绘制一个通用的 3D 三角形网格 Matplotlib 似乎是理想的候选者 但我会选择任何可以实现我将要描述的功能的 3D 渲染 假设我有一个由 X Y 和 Z 定义的三角形网格 点云的 3D 坐标 每个长度
  • Android - SSL/TLS 和 ECC(椭圆曲线加密)

    我正在开发一个与网络服务器通信的 Android 应用程序 我们使用 HTTPS 进行此通信 并且 Android 应用程序内还有一个客户端证书用于身份验证 我们使用 ECC ANSI x9 62 创建 SSL 证书 以便拥有非常小的证书
  • Opencv dll问题

    我正在遵循使用 opencv 进行对象检测的教程 我一步一步完成 但是当我运行它时 我收到此错误 The program can t start because opencv 244d dll is missing from your co
  • AVAudioSession :麦克风耳机作为输入,iPhone扬声器作为输出

    使用iOS10 有更多的可能性来管理AUdioSession 但我无法在音频通过iPhone扬声器发出时保持耳机麦克风作为输入 下面的 overrideOutputAudioPort 方法还将输入音频端口覆盖为 iphone 麦克风 let
  • Wpf面板后台问题

    当我不设置面板背景时 我无法获取鼠标事件 为什么有这种行为 我可以通过将背景设置为透明 默认情况下为空 来获取面板上的鼠标事件 空背景和透明背景有什么区别 When Background null它在渲染时不会向 MILCore 发出任何绘
  • Azure Analysis Services 是否支持服务主体登录 SQL Azure

    我有一个 Azure Analysis Services 模型 使用以下连接字符串从 SQL Azure 读取数据 Data Source MySQLAzureDB database windows net Initial Catalog
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • 从 C# 执行多行 PowerShell 脚本

    我是 PowerShell 新手 我正在尝试从 C 执行 PowerShell 脚本 我编写的 PS 脚本将 xml 文件从主机 运行 PS 脚本 传输到远程计算机 脚本如下 Username User Password Pass Secu
  • 如果steps_per_epoch不适合样本数量怎么办?

    使用 Kerasfit generator steps per epoch 应等于可用样本总数除以batch size 但是发电机或fit generator如果我选择一个batch size不适合样本中的 n 次 是否会产生样本直到无法填
  • microsoft.office.tools.excel.dll 安装在哪里?

    我已经安装了带 NET 4 0的VS2010 SP1 但找不到microsoft office tools excel dll所在的位置 问题 gt 在哪里可以找到这个 DLL 通常 一旦安装了该程序集 该程序集就应该位于 GAC 中Off
  • 如何在 CMFCEditBrowseCtrl::EnableFileBrowseButton 中设置默认文件扩展名?

    如何在 CMFCEditBrowseCtrl EnableFileBrowseButton 中给出默认文件扩展名 应该如何传递参数 我尝试像下面的代码 CMFCEditBrowseCtrl py file path py file path
  • Java中将字符串拆分为等长子字符串

    如何分割字符串 Thequickbrownfoxjumps Java 中相同大小的子字符串 例如 Thequickbrownfoxjumps 4 个相同大小的应该给出输出 Theq uick brow nfox jump s 类似问题 Sc
  • PhantomJS open() 太慢

    我在 NodeJS 中进行网页抓取时遇到问题 我想从远程网页获取一些数据 但数据已从 javascript 插入到 html 中 我开始使用 PhantomJS 它运行得很好 除了一件事阻碍了我完成工作 PhantomJS 运行速度太慢 这
  • 关于暂定定义

    我从一本关于暂定定义的书中读到 暂定定义是没有任何外部数据声明 存储类说明符并且没有初始值设定项 暂定定义 如果翻译单元的结尾是 已达到并且没有出现带有初始化程序的定义 标识符 请解释一下上面这句话的意思 另外 声明和定义之间的区别 我因此
  • RCPP_MODULE 用于继承类

    当我尝试使用继承类的模块时遇到问题 基本上 我无法编译这部分 RCPP MODULE PACE using namespace Rcpp class
  • 何时使用 StringBuilder? [复制]

    这个问题在这里已经有答案了 可能的重复 字符串与 StringBuilder 我刚刚重温了一些我用来学习 VB NET 的书籍 我不确定我是否已经理解了这一点 了解 StringBuilder 是如何 什么的 使用指导是什么 如果您要连接