В массиве строк c # отдельные элементы массива имеют ссылочный тип или тип значения? - PullRequest
0 голосов
/ 16 марта 2012

Поскольку в любом массиве сам массив является ссылочным типом, а отдельные элементы массива имеют тип значения ... это также относится и к массиву строк?

Ответы [ 5 ]

3 голосов
/ 16 марта 2012

Элементы в массиве являются значениями, но они могут быть либо типом значения, либо ссылочным типом.

Для массива типов значений само значение сохраняется в массиве.

Для массива ссылочных типов ссылки на объекты хранятся в массиве.

Таким образом, массив строк - это фактически массив строковых ссылок.

2 голосов
/ 16 марта 2012

System.String является ссылочным типом.

1 голос
/ 16 марта 2012

Массивы не типы значений. И нет причин, по которым их содержимое должно быть типом значения, если, конечно, они на самом деле не являются типами значения. (например, int).

int[] intArray;  // intArray is a reference type.  It holds ints, a value type
string[] stringArray; // stringArray is a reference type.  It holds strings, a reference type

РЕДАКТИРОВАТЬ : Специальная цитата со ссылочной страницы о типе массива:

Типы массивов - это ссылочные типы, полученные из абстрактного базового типа. Массив. Поскольку этот тип реализует IEnumerable и IEnumerable, вы можно использовать итерацию foreach для всех массивов в C #.

0 голосов
/ 16 марта 2012

string (C # Reference) - Это также ссылочный тип в случае массива.
Тип строки представляет собой последовательность из нуля или более символов Юникода. строка является псевдонимом для String в .NET Framework.

Оператор [] может использоваться для доступа только для чтения к отдельным символам строки:

string str = "test";
char x = str[2];  // x = 's';

Строковые литералы имеют тип string и могут быть записаны в двух формах, заключенных в кавычки и @. Строковые литералы в кавычках заключены в двойные кавычки (")

проверьте ссылку на документацию msdn для получения подробной информации об этом.

0 голосов
/ 16 марта 2012

отдельные элементы массива имеют тип значения

Неправильно. Тип базового элемента массива может иметь значение или ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...