问题标签 [stringbuilder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - StringBuilder 中的换行符
你如何在中追加一个新行(\n\r)字符StringBuilder
?
optimization - 优化 string.Format + 替换
我有这个功能。Visual Studio 配置文件将带有 string.Format 的行标记为热门,我花了很多时间。
我怎样才能更有效地编写这个循环?
c# - 如何最大化大对象堆中最大的连续内存块
情况是我正在对远程服务器进行 WCF 调用,该服务器将 XML 文档作为字符串返回。
大多数时候这个返回值是几K,有时是几十K,偶尔几百K,但很少有可能是几兆(第一个问题是我无法知道)。
正是这些罕见的情况造成了悲伤。我得到一个开始的堆栈跟踪:
我已经阅读过,这是因为大对象堆太碎片化了,所以即使在调用之前快速检查 StringBuilder.EnsureCapacity 只会导致提前抛出 OutOfMemoryException (因为我在猜测需要什么,它实际上可能不需要那么多,所以我的检查导致的问题多于解决的问题)。有些意见是我对此无能为力。
我问过自己的一些问题:
- 使用更少的内存 - 你检查过泄漏吗?是的。内存使用量会上升和下降,但没有基本的增长可以保证这种情况发生。有时它失败了,它在之前的那个阶段成功了。
- 转移较小的金额不是一个选项,这是我无法控制的第三方网络服务(或者至少需要很长时间才能解决,同时我仍然有问题)
- 你能对 LOH 做些什么来降低它失败的可能性吗?...现在这是最富有成效的课程。这是一个 32 位进程(它必须出于各种政治、技术和无聊的原因),但通常有数百兆免费(我们见过失败的最大数量的倍数)。
- 我们可以监控 LOH 吗?使用 perfmon 我可以跟踪堆的大小,但我认为没有办法监控最大的可用连续内存块。
问题是:对尝试的事情有什么建议或建议吗?
.net - 使用 StringBuilder 与 XmlDocument 或创建 XML 文档相关的优势是什么?
这可能有点代码异味,但我已经看到它是一些生产代码,即在创建 XML 文档时使用StringBuilder而不是XmlDocument 。在某些情况下,这些是一次写入操作(例如,创建文档并将其保存到磁盘),而其他操作则将构建的字符串传递给 XmlDocument 以将XslTransform 转换为返回给客户端的文档。
如此明显的问题:以这种方式做事是否有好处,是否应该根据具体情况来做,或者这是错误的做事方式?
c# - WTSVirtualChannelRead 只读取字符串的第一个字母
我正在尝试编写一个 hello world 类型的程序以在 Windows 终端服务客户端中使用虚拟通道。
我正在从 MSTSC COM 对象和 ActiveX 控件发送数据。
每次NativeMethods.WTSVirtualChannelRead
运行我都会得到一个执行
对此的任何帮助将不胜感激。
编辑——当函数运行时,mHandle 有一个非零值。更新代码以添加该检查。
EDIT2 -- 我使用了P/Invoke Interop Assistant并生成了一个新的签名
它现在接收文本字符串(是的!),但它只获取我的测试字符串的第一个字母(嘘!)。关于出了什么问题的任何想法?
编辑 3 --- 在应该读取 hello world 的调用之后;
字节读取 = 24
缓冲区长度 = 1; 缓冲区.容量 = 16; Buffer.m_StringValue = "H";
c# - SQL DataReader 如何显示查询中的空值
我有一个 DataReader 和一个 StringBuilder (C#.NET),以下列方式使用;
这对我的使用非常有用,但是当一行为空时,我需要它返回“null”,而不仅仅是“”。什么是实现这一目标的好方法?
非常感谢您的建议
c# - 检测使用/滥用 String.Concat 的工具(应使用 StringBuilder)
众所周知,不应使用 StringBuilder 代替少量串联:
然而,在相当大的循环中,StringBuilder 是显而易见的选择:
是否有一种工具可以在原始 C# 源代码或已编译程序集上运行,以识别源代码中String.Concat
被调用的位置?(如果您不熟悉,s += "foo"
则映射到String.Concat
IL 输出中。)显然,我无法实际搜索整个项目并评估每个项目+=
以确定左值是否为字符串。
理想情况下,它只会指出 for/foreach 循环内的调用,但我什至会忍受所有的误报 String.Concat
。另外,我知道有一些重构工具会自动重构我的代码以使用StringBuilder
,但我现在只对确定Concat
使用情况感兴趣。
我经常在我的代码上运行 Gendarme 和 FxCop,但这些工具都不能识别我所描述的内容。但是,正如@Cristian 指出的那样,旧版本的 FxCop 曾经对此进行检查。也许有一种方法可以从旧版本的 FxCop 中提取该规则并告诉新版本(1.36)使用它?
vb.net - 将 VB StringBuilder 设置为空字符串的适当方法是什么?
我正在使用VB的StringBuilder,我很好奇什么被认为是清空构建器/将其设置为新字符串的“最佳实践”。会不会是这样的:
或者,还有更好的方法?
谢谢
c# - P/Invoke 传递了 StringBuilder 的函数
在 C# 文件中,我有一个
字符串数据是输入,StringBuilder 响应是函数写入内容的地方
归档函数原型(用 C 编写)如下所示:
它在 dataChr 中接收一个字符串,然后执行
从 C# 我称之为这样的东西:
这可行,但问题是,正如您可能看到的那样,我为 StringBuilder 的大小赋值,但归档函数可能会返回比我给 StringBuilder 的大小更大的文本(方式)。有任何解决这个问题的方法吗?
c# - 管理 StringBuilder 资源
我的 C# (.NET 2.0) 应用程序有一个容量为 2.5MB 的 StringBuilder 变量。很明显,我不想每次填满这么大的缓冲区都复制到更大的缓冲区空间。到那时,缓冲区中的数据太多了,删除旧数据是一个可行的选择。谁能看到我这样做的任何明显问题(即我是否引入了比我正在解决的更多的性能问题),或者看起来还可以吗?
编辑:附加信息:
在这个应用程序中,新数据通过串行连接非常迅速(大约几毫秒)接收。我不想如此频繁地用这些新信息填充多行文本框,因为这会降低应用程序的性能,所以我将它保存到StringBuilder
. 每隔一段时间,应用程序就会将 的内容复制StringBuilder
到文本框并清除StringBuilder
内容。