Во-первых, обратите внимание, что строки в .NET сильно отличаются от строк, хранящихся в неуправляемых языках (таких как C ++) ... В CLR длина строки (в символах и в байтах) фактически хранится в памяти так что CLR знает, насколько большой блок памяти (массив символов) содержит строку. Это делается при создании строки и не изменяется при условии неизменности типа System.String
.
В C ++ это немного отличается, так как длина строки определяется путем чтения до первого нулевого символа. Из-за того, как в CLR работает использование памяти, вы, по сути, можете считать, что получение свойства Length
строки аналогично получению переменной int
. Затраты на производительность здесь будут абсолютно минимальными, если вы об этом думаете.
Если вы хотите больше узнать о строках в .NET, попробуйте статью Джона Скита на эту тему - кажется, в ней есть все детали, которые вы когда-либо хотели бы узнать о строках в .NET. 1010 *