相关疑难解决方法(0)

将列表转换为C#中的字符串

如何将列表转换为C#中的字符串?

当我toString在List对象上执行时,我得到:

System.Collections.Generic.List`1 [System.String]

.net c# string list

166
推荐指数
8
解决办法
24万
查看次数

IEnumerable <char> to string

我以前从来没有偶然发现过这个问题,但我现在已经感到惊讶,因为我找不到一个非常简单的方法来转换IEnumerable<char>为a string.

我能想到的最好的方法是string str = new string(myEnumerable.ToArray());,但是,对我来说,似乎这会创造一个新的char[],然后string从中创造一个新的,这看起来很昂贵.

我认为这将是.NET框架内置的常用功能.有更简单的方法吗?

对于那些感兴趣的人,我想使用它的原因是使用LINQ来过滤字符串:

string allowedString = new string(inputString.Where(c => allowedChars.Contains(c)).ToArray());
Run Code Online (Sandbox Code Playgroud)

.net c# string ienumerable

136
推荐指数
6
解决办法
7万
查看次数

字符串ctor是将IEnumerable <char>转换为字符串的最快方法

编辑发布.Net Core 2.1

重复测试.Net Core 2.1的发布,我得到这样的结果

"Concat"的1000000次迭代耗时842ms.

"新字符串"的1000000次迭代耗时1009ms.

"sb"的1000000次迭代耗时902ms.

简而言之,如果您使用.Net Core 2.1或更高版本,Concat则为王.


编辑了这个问题,以纳入评论中提出的有效点.


我正在思考我对前一个问题的回答,我开始怀疑,是这样,

return new string(charSequence.ToArray());
Run Code Online (Sandbox Code Playgroud)

IEnumerable<char>a 转换为a 的最佳方法string.我做了一点搜索,发现这里已经提出这个问题.那个答案断言,

string.Concat(charSequence)
Run Code Online (Sandbox Code Playgroud)

是一个更好的选择.在回答这个问题后,StringBuilder还提出了一种列举方法,

var sb = new StringBuilder();
foreach (var c in chars)
{
    sb.Append(c);
}

return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

虽然这可能有点笨拙但我把它包括在内是为了完整性.我决定我应该做一点测试,使用的代码在底部.

当在发布模式下构建时,通过优化,并在没有附加调试器的情况下从命令行运行,我得到这样的结果.

"Concat"的1000000次迭代耗时1597ms.

"新字符串"的1000000次迭代耗时869ms.

"sb"的1000000次迭代耗时748ms.

据我估算,它的new string(...ToArray())速度接近该string.Concat方法的两倍.该StringBuilder是稍快,但仍然是尴尬使用,但可能会延长.

我应该坚持,new string(...ToArray())还是有什么我想念的?

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

class Program …
Run Code Online (Sandbox Code Playgroud)

c# performance

8
推荐指数
2
解决办法
1455
查看次数

将float-formated char []转换为float

我有一个char[] salary包含来自a的数据string.我想转换char[] salaryfloat,但我正在尝试的方法似乎极其缓慢,这是:

float ff = float.Parse(new string(salary));
Run Code Online (Sandbox Code Playgroud)

根据Visual Studio的Performance Profiler,这会占用过多的处理:

在此输入图像描述

所以我想知道是否有更快的方法来做到这一点,因为这里的表现是重点.在char[]被格式化,像这样:

[ '1', '3, '2', ',' '2', '9']
Run Code Online (Sandbox Code Playgroud)

并且基本上是一个类似JSON的浮点数转换为适合的每个数字(和逗号)char[].

编辑:

我已经重新格式化了代码,似乎性能命中实际上是从转换char[]string,而不是从解析stringfloat.

c# floating-point performance parsing

3
推荐指数
2
解决办法
454
查看次数

标签 统计

c# ×4

.net ×2

performance ×2

string ×2

floating-point ×1

ienumerable ×1

list ×1

parsing ×1