说我想要在字符串中输入第三个字母。
string s = "cats";
使用s [2]获取值之间的区别是什么, 正如我在网上看到的大多数例子:
char[] c = s.ToCharArray();
char x = c[2];
答案 0 :(得分:8)
"cats"[2]
"cats".ToCharArray()
答案 1 :(得分:4)
s[2]
方法只是查找该位置的字符并将其返回。
s.ToCharArray();
方法分配新的char[]
,然后c[2]
在数组中查找。
如果您只需要一个字符,请使用s[2]
方法,因为ToCharArray()
方法很浪费。如果您需要字符串中的所有字符为char[]
,则ToCharArray()
方法更清晰,可能更快(我没有进行任何基准测试,所以不要保留我到那。)
修改强>:
MS.NET和Mono的string.ToCharArray()
实现都使用不安全的代码来固定内部char
和重复char[]
并对指针进行操作。这肯定比为每个字符调用索引器更快,并且可能比使用枚举器迭代所有字符更快。另外我发现它更清洁,特别是在它用作参数的情况下:
DoSomethingWithCharArray(s.ToCharArray());
VS
int i = 0;
char[] arr = new char[s.Length];
foreach (char c in s)
{
arr[i] = c;
i++;
}
DoSomethingWithCharArray(arr);
或
char[] arr = new char[s.Length];
for (int i = 0; i < s.Length; i++)
{
arr[i] = s[i];
}
DoSeomthingWithCharArray(arr);
答案 2 :(得分:3)
不同之处在于您不必要地创建了一个字符数组。使用s [2]。
答案 3 :(得分:0)
如果您只是阅读角色,那么差异只是内存占用量略大。但是,如果您还想更改某些字符并保留原始字符串,那么使用ToCharArray
非常有用。