Это зависит от того, что вы подразумеваете под "массивом".
Если вы имеете в виду общую вычислительную концепцию коллекции объектов произвольного доступа с фиксированной длиной и целочисленной индексацией, то да, строку можно считать именно такой. (Общая вычислительная концепция часто включает смежность в памяти, но за исключением нескольких случаев, таких как использование указателей в небезопасном коде, что не очень важно с точки зрения C #).
Если вы имеете в виду реализацию этой концепции на языке C # char[]
, то не совсем, это разные вещи.
На практике System.String
действительно реализован как массив char
s, но это не обязательно.
Язык придирки в сторону, практический бит:
Если вы хотите выполнить те же операции со строкой, что и в char[]
, то это часто будет работать (особенно если строка доступна только для чтения) и очень часто будет наиболее эффективным способом сделать это, пока концептуально довольно просто. В частности, использование foreach
и использование индекса, который перемещается между 0
и str.Length - 1
, работают хорошо. Точно так же много операций, которые можно выполнить с char[]
, можно выполнить с string
, например, CopyTo()
и приведение к IEnumerable<char>
.
.
Если вы хотите иметь массив символов, вам нужно вызвать ToCharArray()
.