在C#中访问字符串中的字符与转换为字符数组的区别

3

在回答另一个问题时,有人指出在C#中可以通过sting[i]访问字符串中的一个字符。我的问题是,在这个操作背后发生了什么?这与将字符串转换为字符数组然后解析有何不同?

我认为区别在于内存使用和可变性,但我更想知道确切答案而非揣测 :)


1
在这里阅读有关索引器的内容:http://msdn.microsoft.com/zh-cn/library/6x16t2tx.aspx - Steve Townsend
1
一个字符串字符数组。你直接访问这些单个字符。这就是为什么最好从学习C编程开始... - mellamokb
@mellamokb 在学C#之前我学过C/C++,并且我知道什么是字符串。我很好奇这个特定的抽象是如何工作的。在C#中它们是明显不同的类型。 - evanmcdonnal
这是相关的索引器:http://msdn.microsoft.com/zh-cn/library/system.string.chars - Cade Roux
1个回答

6
主要区别在于将其转换为字符数组会创建字符串内部字符数组的副本,而使用索引器将直接访问字符。

这个字符串是可变的吗?我可以执行 string[3] = "i" 吗? - evanmcdonnal
1
@evanmcdonnal 不行。(除非您使用不安全的代码和指针操作,但这通常是一个非常糟糕的想法。除非您确实非常确定自己知道自己在做什么,否则绝对不要这样做。)您可以尝试编译代码,看看它不会起作用。 - Servy
@Servy 我相信你的话。不幸的是,我现在所处的环境无法这样做(在使用OS X的讲座中)。 - evanmcdonnal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接