gpt4 book ai didi

c# - 自动重构为 string.Format

转载 作者:太空狗 更新时间:2023-10-30 01:10:01 25 4
gpt4 key购买 nike

我在 VS2008 中有一个 c# 项目,其中有很多行代码如下所示:

string s = "bla blab" + x + "bla bla bla" + y + .... ;

我想使用 string.Format(...) 将这些字符串转换为单个字符串。

我目前使用的是Resharper 5.0,一行代码一键重构。问题是我有超过 1000 行这样的行,我不想手动检查每一行。

有没有办法自动执行此操作?

编辑:正如马克纠正我的那样,我真的不需要这样做,但我有另一个非常相似的问题:我得到了这个代码

 string s = "aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa";

(字符串是一些sql查询)

我想将它重构为一个常量字符串:

string s = "aaaaaaaaaaaaaaaaaa....aaaaa";

(这次效率更高了吧?)

resharper 可以针对每个字符串自动执行此操作,但同样,我想做很多次。

保留行缩进会很棒:

string s = @"aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa";

但只要一长行也可以。

谢谢,水平

最佳答案

来自评论:

it's much more efficient memory wise

不,不是。它大约相同,string.Format marginally less 高效,因为数据以数组(通常是 GEN0)的形式传递,需要解析格式字符串(公平地说,这实际上非常快)。

规范中定义复合字符串+序列,即

string s = "abc" + x + "def" + y;

编译为:

string s = string.Concat("abc", x, "def", y);

在内部,这是非常有效的,并且不会出现经典的“伸缩字符串”问题。此外,string.Format 的重载采用不同数量的操作数,甚至可以避免参数数组开销。当所有操作数都是字符串时的额外重载(它可以更容易)。

简而言之,这不会让您付出任何代价。除非您这样做以便可以在外部提供格式(在 i18n 场景中很常见),否则我不会管它。您所做的就是冒错误的风险;你并没有让它更有效率。

关于c# - 自动重构为 string.Format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5585146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com