![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Массивы так глубоко зашиты в рантайм, что такие вещи надо скорее не рефлектором смотреть, а в Роторе.
Или смотреть сгенерированный машинный код с помощью cordbg, только не забыть m JitOptimizations 1. На простеньком коде:
выяснилось, что длина массива хранится со смещением 4 байта от адреса объекта в памяти, дальше следует непосредственно содержимое массива. JIT загнал адрес a в регистр, но поместить длину в регистр не догадался. Равно как и не догадался убрать проверку на выход за границу массива. Длина строки хранится со смещением +8 байт. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Yama |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: 2 Всего: 2 |
В любом случае на низком уровне сам текст строки хранится в виде массива *char. Я когда-то баловался тем, что писал на C++ класс типа MyString, в котором реализовывал и свойства Length (правда, как функцию, которая возврашает длину строки ![]() ![]() Сама по себе строка, если изначально не определена как const - величина изменяемая и измеряемая, причем метод измерения длины оной строки может варьироваться в зависимости от реализации методов - от запроса функции mystr.Length(), которая вычисляет длину в момент запроса, выдет ее и прекращает свое существование, до реализации отдельного свойства класса типа mystr.count , который может вычислятся и в констукторе класса при инициализации, и непосредственно при запросе.. опять таки все зависит от каждой конкретной реализации класса String и требований, которые к нему предъявляются... Отредактировано.. З.Ы. Сорри, не ту цитату добавил 1й раз ![]() Добавлено @ 20:25
2Void Кстати, если ты решил разобраться с С и с выделением и управлением памятью в С и т.д. и т.п., советую тебе почитать Страуструпа и любые издания, которые посвящены непосредственно базовому языку С, которые выходили года до 1995 ![]() З.Ы. 2Mr.DUDA СОРРРИИИИ за оффтоп ![]() ![]() Это сообщение отредактировал(а) Yama - 15.12.2006, 20:16 --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
|||
|
||||
Exception |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Товарищ, ошибаетесь.
|
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Yama,
Мы обсуждаем именно дотнетовскую реализацию String, а не сишную. - string является неизменяемым объектом, сложение строк и substring создают новый объект, а не модифицируют буфер char-ов - внутреннее представление строки - unicode (2 байта на символ), а не char P.S. думаю, что Void хорошо знаком и с изданиями Страуструпа и проч., так что зря учить его пытаетесь ![]() -------------------- ![]() |
|||
|
||||
Yama |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: 2 Всего: 2 |
Exception,
mr.DUDA, ![]() Каюсъ!!!!!!! Ребят, чесслово не думал, что под .нет все настолько переделали ![]() ![]() *ушел учить .нет мат.часть........* --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Ну, э... вообще-то... char -- это и есть 2 байта ![]() -------------------- Да. Именно так. |
|||
|
||||
Yama |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: 2 Всего: 2 |
Но...... в .нет ![]() http://msdn2.microsoft.com/en-us/library/system.string.aspx
З.Ы. учу .нетматчасть ![]() --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Дрон, а мы про С говорили, там 1 байт на char. У них есть двухбайтный аналог - short, unsigned short или wchar_t. -------------------- ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Брр... Совсем запутался ![]() Ну ладно. Не буду встревать в чужие темы ![]() -------------------- Да. Именно так. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |