TextBox.Text += "字符串";与 TextBox.AppendText(“字符串”);

2023-11-26

这两种方法有什么区别?

其中一个比另一个更有效率吗?

我在想也许 AppendText() 使用类似于 StringBuilder 的方法,即它使用自己的缓存而不是每次创建和附加新字符串,是真的吗?

Thanks.


正如中明确提到的MSDN 文档的备注部分

AppendText 方法使用户能够将文本附加到文本控件的内容,而无需使用文本串联,这在需要许多串联时可以产生更好的性能。

你的问题,

这两种方法有什么区别?

我们都知道如何TextBox.Text += something;会起作用,即每次创建并附加一个新字符串,但是如何AppendText有效我找不到任何代码片段是否在内部使用StringBuilder或者是其他东西。

其中一个比另一个更有效率吗?

我认为上述问题的回答要视情况而定,(基于测试用例观察)

if Multiline属性设置为false then 连接 (+=)产生更好的结果,但另一方面Multiline属性设置为true then AppendText产生更好的性能。

EDIT读完后罗林的评论我制作了一个自定义的 win-form 解决方案,其中有一个简单的textbox我在其中附加了一个简单的字符串hello 10000次使用简单的for-loop

    private void btnAppendText_Click(object sender, EventArgs e)
    {
        txtText.Text = string.Empty;
        DateTime startTime = DateTime.Now;
        for (int i = 0; i < 10000; i++)
        {
            txtText.AppendText(s);
        }
        DateTime endTime = DateTime.Now;
        txtTime.Text = (endTime.Ticks - startTime.Ticks).ToString();
    }

    private void btnConcante_Click(object sender, EventArgs e)
    {
        txtText.Text = string.Empty;
        DateTime startTime = DateTime.Now;
        for (int i = 0; i < 5000; i++)
        {
            txtText.Text += s;
        }
        DateTime endTime = DateTime.Now;
        txtTime.Text = (endTime.Ticks - startTime.Ticks).ToString();
    }

Output非常令人惊讶,
测试 1:多行属性为 true我必须将文本连接的迭代次数减少到一半,即 5000 次,因为它需要很长时间。

btnAppendText_Click输出开txtTime was 3722212910000 次迭代几乎需要 3-4 秒
btnConcante_Click输出开txtTime was 14449906487仅 5000 次迭代就超过 25 分钟。

从上面的结果可以很清楚地看出,AppendText更快、更高效(当Multiline is true) than Concatenation

测试 2:多行属性为 false

btnConcante_Click输出开txtTime was 3986228010000 次迭代几乎需要 3-4 秒
btnAppendText_Click输出开txtTime was 104327967210000 次迭代大约需要 2-3 分钟

从上面的结果可以很清楚地看出,串联更快、更高效(当Multiline is false) than AppendText

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TextBox.Text += "字符串";与 TextBox.AppendText(“字符串”); 的相关文章

  • 不支持的媒体类型 ASP.NET Core Web API

    在前端 我使用 Angular 从表单收集一些数据并将其发送到我的服务器端控制器 如下图所示 我在控制器和服务上获取数据 scope newData 但是当它到达服务器时 我收到以下错误 不支持的媒体类型 并且我的 newData 为空 我
  • 全球化自定义数字格式 - 可变小数点

    我正在尝试更改公司应用程序中现有的数字格式 以使其对国际用户更具可读性 这是一个股票交易应用程序 因此大多数股票价格的数字精确到小数点后 2 位 例如 gt 17 23 我们还可以得到精确到小数点后 4 位的价格变动 因此细价股票可能是 0
  • Bjarne Stroustrup 的 C++ 编程和实践第 2 版中的使用单参数排序

    我正在阅读 Bjarne Stroustrup new C PP 第二版 他在其中使用了排序方法 sort someVector 使用此方法编译代码时出现以下错误 3 IntelliSense 没有重载函数 sort 的实例与参数列表匹配
  • 使用顶点缓冲区对象 (VBO) 渲染 Kinect 点云

    我正在尝试制作一个动态点云可视化工具 使用 Kinect 传感器每帧更新这些点 为了抓取帧 我使用 OpenCV 和 GLUT 来显示 OpenCV API 对于点 xyz 位置返回 640 x 480 float 对于 rgb 颜色数据返
  • C#/Linq 获取相邻的集合

    我有一个有序列表 例如 0 1 2 6 7 10 我想要得到数字加 1 的集合 我想要第一个数字和计数或系列 所以我会得到开始 0 计数 3开始 6 计数 2开始 10 计数 1 我怎样才能在 C 中做到这一点 答案是我认为最好的方式 对我
  • 路径不是有效的虚拟路径

    下面的方法采用指向 xml 文件的路径 tree LoadContentFile path 我从本地文件系统传递完整路径 或使用Server MapPath 但每次我总是收到此错误 Path 不是有效的虚拟路径 编辑 我正在使用Teleri
  • libc++ 中短字符串优化的机制是什么?

    这个答案 https stackoverflow com a 10319672 1805388给出了短字符串优化 SSO 的高级概述 但是 我想更详细地了解它在实践中是如何工作的 特别是在 libc 实现中 字符串必须有多短才能符合 SSO
  • EF 6:映射复杂类型集合?

    EF 6 代码优先 是否支持复杂类型集合 值对象集合 映射 我知道它支持复杂类型 但还没有找到我们拥有复杂类型集合的示例 例如 假设您有一个名为 Student 的实体 其中包含联系人集合 对于 NH 我可以简单地说 Student 有一个
  • 实体框架 6 - 使用我的 getHashCode()

    这篇文章需要了解一定的背景知识 请耐心等待 我们有一个使用 EF 的 n 层 WPF 应用程序 我们通过 dbContext 将数据从数据库加载到 POCO 类中 dbContext 被销毁 然后用户可以编辑数据 我们使用 Julie Le
  • 强名称验证失败

    两台机器 均带有 NET 3 5 和 VS 2008 VC SP1 可再发行组件 单个 exe 使用两个签名的 DLL 一个在 C CLI 中 一个在 C 中 该exe在一台机器上加载并运行良好 另一方面 我在 C 可执行文件上收到 强名称
  • 类型或命名空间名称“X”在命名空间“Y”中不存在 - 在 VS 生成的代码中

    这是我遇到过的最奇怪的错误 这个 MVC Web 项目直到今天都运行良好 几周以来还没有任何人对其进行处理 尽管没有任何改变 但现在简单地运行它会导致 命名空间 CMSModels ViewModels 中不存在类型或命名空间名称 Colo
  • 如何使用现代 GCC 抑制“-fpermissive”错误?

    我正在尝试编译一些不合格的代码C 17 https en wikipedia org wiki C 2B 2B17 但我遇到了以下问题 pragma GCC diagnostic push pragma GCC diagnostic ign
  • C 中的结构和联合,确定大小和访问成员

    All 这是一个关于 Unions 的例子 我觉得它令人困惑 struct s1 int a char b union struct char c long d long e var 考虑到char是1个字节 int是 2 个字节并且lon
  • Makefile:没有规则来制作目标

    我正在关注本指南makefile http www cs colby edu maxwell courses tutorials maketutor 但我根本不理解最后一个例子 并且我无法让我的 makefile 工作 因为我收到了错误ma
  • C# 从mp4文件中提取mp3文件

    有没有简单的方法从 mp4 文件中提取 mp3 文件 我已经尝试过更改文件扩展名 但这不允许我编辑 mp3 描述 谢谢你 Use Xabe FFmpeg https xabe net product xabe ffmpeg 它是免费的 非商
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 处理后退导航 Windows 10 (UWP)

    在我的 Xaml 页面中 我有一个框架 我正在尝试使用 backButton 事件来在frame 内导航 所以我尝试使用这段代码 public MainPage this InitializeComponent if Windows Fou
  • 隐式构造函数和默认构造函数有什么区别?

    这是非常微不足道的 但是捷克语 我的母语 不区分隐式和默认 所以我对一些捷克语翻译感到困惑 隐式和默认构造函数或构造函数调用之间有什么区别 struct Test Test int n 0 您能用这些术语描述以下语句的作用吗 Test t1
  • 哪个 AWS Simple Email Service API 是最新的

    我正在使用 AWS SES 构建一个应用程序 但我不清楚应该针对哪个版本的 API 进行开发 AWSSDK SimpleEmail https www nuget org packages AWSSDK SimpleEmail AWSSDK
  • PerformanceCounter.NextValue() 抛出 InvalidOperationException

    这是创建性能计数器的代码 var ftpPerfCounter new PerformanceCounter FTP Service Current Connections Total 这是异常发生的地方 int cnt int Math

随机推荐

  • Datatables + PHP:多个表的服务器端处理

    如何获取数据表服务器端处理脚本来处理自定义查询 我需要从多个表中选择列并让数据表呈现它们 Datatables net 使用 PHP 的服务器端处理 SSP 总结如下 https datatables net examples server
  • 检测浏览器是否处于全屏模式

    有什么方法可以可靠地检测浏览器是否以全屏模式运行 我很确定没有任何浏览器 API 可以查询 但是有人通过检查和比较 DOM 公开的某些高度 宽度测量值来解决这个问题吗 即使它只适用于某些浏览器 我也有兴趣了解它 Chrome 15 Fire
  • Paho MQTT Android 服务唤醒活动

    我正在尝试使用 Paho Android MQTT 库 从这里下载的 例子服务申请工作正常 订阅和publish当示例应用程序运行时 方法也可以正常工作 当我close它 设备不再接收消息通知 有谁有如何正确修改 实现服务以接收消息的经验
  • 在 Pig 中将一个元组拆分为多个元组

    我喜欢从单个元组生成多个元组 我的意思是 我有包含以下数据的文件 gt gt cat data ID ColumnName1 Value1 ColumnName2 Value2 所以我通过以下命令加载它 grunt gt gt A load
  • php time() 和 microtime() 有时不一致

    在使用 microtime 使用 PHP 5 记录一些数据时 我遇到了一些与日志文件的时间戳似乎略有不同相的值 因此我只是尝试比较 time 和 microtime 的输出使用一个简单的脚本 usleep只是为了限制数据输出
  • ASP.NET:将值从用户控件传递到页面?

    我正在 ASP NET 使用 VB 中创建一个用户控件 该控件使用文本框上的自动完成 ajax 控件来获取值 然后我希望页面回发并根据从此控件传递给它的任何值运行一些代码 问题是 我不太确定如何做到这一点 我确信这很容易 我应该知道 但我不
  • 让ListView滚动到所选项目

    我有一个 WinRT C XAML 应用程序 其视图具有垂直的项目列表视图 根据项目的数量 ListView 显示垂直滚动条 这是 XAML 定义
  • D3.js强制有向图,每组颜色不同?

    我用 d3 js 插件制作了一个力导向图 我想根据节点和标签所属的组为节点和标签着色 我添加了颜色比例 var color d3 scale category20 并添加到节点变量 style fill function d return
  • 析构函数和垃圾收集器之间的区别

    我想知道析构函数和垃圾收集器之间有什么区别 析构函数用于在应用程序生命周期结束时处理所有未使用的对象 垃圾收集器的使用也是如此 垃圾收集器可以手动调用或完成在应用程序结束时 与析构函数相同 两者都是可选的 用于处理未引用的对象 任何人都可以
  • 使用自动属性实现单例是一个好主意吗?

    我最近发现了汽车属性并且非常喜欢它们 目前我正尝试在任何可以的地方使用它们 不仅仅是为了能够在任何地方使用它们 更多的是为了看看它们在大多数情况下的工作效果如何 现在我正在创建一个单例并想 嘿 让我们在这里也尝试一下自动属性 public
  • 使用 Winium 实现“Chrome Legacy Window”(Chromium) 的自动化

    我正在尝试使用 Winium 自动化 Windows 应用程序 GUI 该应用程序同时使用 WPF 窗口和 Chrome Legacy Window Chromium 窗口 我正在使用该工具 自动化间谍 检查 WPF 窗口内 GUI 元素的
  • PHP Codeigniter:下拉菜单上的 set_value

    我有以下观点 但我该如何申请set value没有默认为请选择
  • python中的“全局名称未定义”概念

    我正在学习Python并阅读了有关此错误的博客 但我仍然无法清楚地理解这一点 这是我正在编写的代码片段 for i in included global signs accounts regions global sign name acc
  • 使用 Windows 打印图像对话框打印图像

    我知道如何使用 PrintDocument 打印图像 但是 我想使用默认的 Windows 打印功能打印我的图像 就像当你右键单击图像并单击打印时 会出现一个对话框 允许你设置尺寸 选择打印机等 有谁知道如何在 C 中实现这一点 我必须使用
  • 如何将操作字符串传递到 JSF 2 复合组件中?

    我正在 JSF 2 中创建一个简单的菜单复合组件 但是 我无法将 String 属性传递到复合组件中以在 的操作属性中使用 我的组件看起来像
  • WCAG 2.0 A 级和 AJAX 生成的内容

    我很难找到明确的答案 如果网站以某种方式使用 AJAX 它是否可以至少通过 WCAG 2 0 A 级 For WCAG 2 0 示例 states 我可以使用 Javascript Ajax Flash PDF Silverlight 和其
  • 非有限差分值,很多数据经过指数化后变成inf和NA

    我将找到排序逻辑模型的参数 但误差总是表明存在非有限的有限差分值 如果我改变 b0 cjll lt function b U lt X b lSU lt csm exp U lSU lt lSU 0 lSU lSU 0 LL lt sum
  • ANDROID FirebaseDatabase:无法保存对象

    我无法将对象添加到 firebase 实时数据库 我尝试了以下代码 但是当这段代码执行时 db child Users setValue person 我的应用程序崩溃了 public class Person String fname S
  • 关于Java字符串池的问题[重复]

    这个问题在这里已经有答案了 考虑这段代码 String first abc String second new String abc 当使用new关键字 Java 将创建abc String又对吗 它会存储在常规堆上还是String水池 多
  • TextBox.Text += "字符串";与 TextBox.AppendText(“字符串”);

    这两种方法有什么区别 其中一个比另一个更有效率吗 我在想也许 AppendText 使用类似于 StringBuilder 的方法 即它使用自己的缓存而不是每次创建和附加新字符串 是真的吗 Thanks 正如中明确提到的MSDN 文档的备注