|
|
||||||
Как устроен System.String ?10.08.2017, 17:24. Показов 6966. Ответов 14
Метки нет (Все метки)
Всем привет.
Подскажите что почитать про System.String. Статьи или книги где есть подробное описание. Конкретно интересует устройство внутреннего буфера, который собственно хранит символы. Буфер представлен не в виде явного массива или связного списка. Если смотреть исходный код System.String, можно увидеть поле private char m_firstChar; Получить символы System.String можно по адресу этого поля. Например, копия строки:
поля m_firstChar пишется массив символов ( или что-то) . Удивляет, что при этом нет реализации интерфейса IDisposable ... Как конкретно создаётся строка посмотреть нельзя, метод string.FastAllocateString(length); написан не на C#. Что бы почитать в этом направлении?
0
|
||||||
| 10.08.2017, 17:24 | |
|
Ответы с готовыми решениями:
14
Создание TcpChannel: не удалось привести тип объекта "System.Int32" к типу "System.String" Ошибка: Не удалось привести тип объекта "System.Int32" к типу "System.String" |
|
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
|
|
| 10.08.2017, 17:29 | |
|
RunningMan, строка - массив символов (16-тибитных слов). Что вам ещё нужно знать?
0
|
|
|
|
||||||
| 10.08.2017, 17:31 [ТС] | ||||||
|
Непонятно как по адресу символа хранится буфер.
Как же сборка мусора и уплотнение памяти? Простой тестовый пример: Печатаем адрес символа char ch = '7';
После сборки мусора адрес символа изменился. Вывод: address: 46482476 address: 46011628
0
|
||||||
|
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
|
|
| 10.08.2017, 17:31 | |
|
1
|
|
|
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
|
||
| 10.08.2017, 17:34 | ||
|
0
|
||
|
|
|||
| 10.08.2017, 17:36 [ТС] | |||
![]() LeniumSoft, ну так этого уже смотрел и смотреть буду. Но всё равно спасибо. Добавлено через 32 секунды почему сборщик контролирует буфер , а не один только символ.
0
|
|||
|
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
|
|
| 10.08.2017, 17:36 | |
|
RunningMan, почитайте Рихтера или Саню Гольдштейна.
1
|
|
|
|
|
| 10.08.2017, 17:39 [ТС] | |
|
Спасибо. Рихтера читал и опять читаю. Пока не понимаю.
0
|
|
|
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
|
|
| 10.08.2017, 17:40 | |
Сообщение было отмечено RunningMan как решение
Решение
RunningMan, значит почитайте Гольдштейна. Там всё отлично рассказыватеся\показывается.
1
|
|
|
|
|
| 10.08.2017, 17:41 [ТС] | |
|
Понял, хорошо. Ищу Гольдштейна.
0
|
|
|
Администратор
|
|||||
| 10.08.2017, 18:05 | |||||
Сообщение было отмечено RunningMan как решение
Решениеchar m_firstChar как fixed char chars[Length+1].
1
|
|||||
|
|
|||||||||
| 10.08.2017, 22:55 [ТС] | |||||||||
|
OwenGlendower ответил на мой вопрос
Hello World!!!
0
|
|||||||||
|
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,334
|
|
| 11.08.2017, 04:43 | |
|
RunningMan, никогда так не делайте! Так даже во всяких Си и С++ не принято делать.
Если вы внимательно присмотритесь к исходнику класса String, то увидите там комментарий возле поля m_firtsChar о том, что данное поле непростое. Компилятор (или JIT) знает это поле «в лицо», и позволяет через него работать с внутренним массивом объекта StringObject, который и есть настоящая строка.
1
|
|
|
|
||
| 11.08.2017, 05:02 [ТС] | ||
|
Не-не, это только что я понял примерно как оно устроено
Ничего подобного куда-то в продакшен не пойдет Извините что не уточнил.
0
|
||
| 11.08.2017, 05:02 | |
|
Помогаю со студенческими работами здесь
15
Как устроен механизм обновления приложений?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|