为什么在地球上有人会在枚举字符之前将字符串转换为char []?初始化在网络周围找到的System.Security.SecureString的常规模式如下:
SecureString secureString = new SecureString();
foreach (char c in "fizzbuzz".ToCharArray())
{
secureString.AppendChar(c);
}
调用ToCharArray()对我没有意义。有人能告诉我这里是不是错了吗?
答案 0 :(得分:6)
由于string
实现IEnumerable<char>
,因此在此上下文中没有必要。您需要ToCharArray
的唯一时间是实际需要数组时。
我的猜测是,大多数致电ToCharArray
的人都不知道string
实施IEnumerable
(即使据我所知,它仍然存在)。
答案 1 :(得分:1)
实际上这很糟糕,因为它
许多不必要的工作......
那是因为字符串是不可变的,并且不允许给出指向其内部数组的指针,因此ToCharArray()会复制而不是强制转换。
那是:
您可以将字符串枚举为char []但是:
你不能:
var chars = (char[])"string";
如果你想进行枚举并希望在某些时候中断,通过使用toCharArray()已经枚举整个字符串nad制作了所有字符的副本。如果字符串非常大,那就太贵了......