|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
||||||
Ref string не работает29.04.2021, 20:06. Показов 3677. Ответов 17
Метки нет (Все метки)
Совершенно не понял, по каким причинам string даже через ref не хочет меняться (уже странно было то, что ссылочный тип и его значения по ссылке нельзя менять сразу, ну да ладно).
Допустим, вот такой код:
0
|
||||||
| 29.04.2021, 20:06 | |
|
Ответы с готовыми решениями:
17
Не работает ref параметр
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 29.04.2021, 20:15 | |
Сообщение было отмечено RARiliar как решение
Решение
RARiliar, string не редактируется. Просто примите как данность. Можно создать только новый string или использовать другие типы данных, например StringBuilder.
0
|
|
|
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
|
|
| 29.04.2021, 20:15 | |
|
RARiliar, Строка неизменяемый тип, при чем тут ref??
1
|
|
|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
|
| 29.04.2021, 20:20 [ТС] | |
|
esperanto_qun, при том, что это чрезвычайно необычно и в спецификации об этом ни слова? При чём когда-то другой человек спрашивал это же, но там ему ответили использовать ref и всех всё устраивало (??????). Какой-то балаган.
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||
| 29.04.2021, 20:25 | ||
|
https://docs.microsoft.com/ru-... mework-4.8 Еще можете тут почитать. https://metanit.com/sharp/tutorial/7.3.php
0
|
||
|
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
|
|||||||||||
| 29.04.2021, 20:27 | |||||||||||
|
RARiliar, что конкретно в вашей задаче надо сделать?
1. Изменить строку:
2. Или получить строку не возвращая, по ссылке? Тогда можно использовать не только ref, но и out:
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
|
| 29.04.2021, 20:30 [ТС] | |
|
QuakerRUS
Я читал вот это https://docs.microsoft.com/ru-... troduction В остальное я не вчитывался. Там это назвали ссылочным типом, пояснили как они работают, а в других материалах они ломают свои же установленные правила, при чём дважды. Простите, но это выше моего понимания.
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||
| 29.04.2021, 20:31 | ||
string неизменяемый тип. Поэтому только массив char[], StringBuilder или хаки через unsafe.Вот тут еще какие-то хаки через Reflection https://gist.github.com/dtao/3371692...
1
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||
| 29.04.2021, 20:48 | ||
|
Добавлено через 11 минут RARiliar, если что, я говорю про ссылочный тип string (а не про ссылочный параметр ref), который является классом, а все классы - ссылочные типы.
1
|
||
|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
|
| 29.04.2021, 21:27 [ТС] | |
|
esperanto_qun, basicCommand по сути должна была являться строкой, инициализируемой в глобальной области видимости, выполняющей функцию хранения в себе определённого кода, разного размера, для дальнейшей его передачи куда надо. Я хотел сделать это без каких-либо провисаний и лишних костылей, т.к. подобных команд может записываться несколько миллионов штук, а то и десятков миллионов в секунду, на протяжении всей работы программы (т.е. важна скорость). Но всё ещё хуже, т.к. различные методы записи туда символов, по стандарту, могут вписывать не более одного символа за раз. Так что все вот эти безопасные и "нужные" копирования туда-сюда вообще не в тему. Статические свойства класса тут тоже не подходят, если не извертеться раком с наследованием (т.е. сделать код немного уродливым).
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 29.04.2021, 21:37 | |
Сообщение было отмечено RARiliar как решение
Решение
RARiliar, посмотрите в сторону StringBuilder. А так же на его свойство Capacity в целях оптимизации выделения памяти, если размер строки планируется часто увеличивать. Так же в конструкторе можно задать сразу количество первоначально выделяемой памяти.
1
|
|
|
sleep
4931 / 4592 / 840
Регистрация: 13.04.2015
Сообщений: 9,749
|
|||||||
| 29.04.2021, 21:48 | |||||||
Сообщение было отмечено RARiliar как решение
Решение
1
|
|||||||
|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
|
| 29.04.2021, 22:01 [ТС] | |
|
I can, да, работает, но для меня не подходит, насколько я могу понимать работу данного метода.
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
||
| 29.04.2021, 22:01 | ||
|
Да и вообще в .NET изменяемая строка это StringBuilder...
1
|
||
|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
|
| 29.04.2021, 22:09 [ТС] | |
|
Someone007, суть именно в том, что basicCommand нужно записывать и перезаписывать каждый раз. Каждая команда имеет свой синтаксис, т.е. это мини программирование. И оно становится большим, когда таких команд генерируется очень много.
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 29.04.2021, 22:45 | |
|
Всё равно не понятно... Ну вот сгенерировали вы команду, потом просто передаете её куда надо... Зачем что-то изменять?
Добавлено через 30 минут И вообще почему вы используете для этого строки? Не лучше ли было бы числовые переменные использовать?
0
|
|
|
0 / 0 / 0
Регистрация: 10.01.2020
Сообщений: 15
|
|
| 29.04.2021, 22:45 [ТС] | |
|
Someone007, существует класс Action, в нём есть метод DoAct. Также есть enum ActionType, в котором кол-во ключей == кол-ву действий в DoAct. Существует 2 типа действий: Те, которые требуют команд, и те, которое не требуют их. Команды, в большинстве случаев, создаются именно теми действиями, которым команды для функционирования не нужны, как например: написание цифры, буквы, спец. символа. Тут соблюдается принцип квантования, т.е. любое безкомандное действие делает что-то одно и очень простое, не целые, блин, слова или конструкции. Соответственно, нельзя записать команду залпом и тут же её куда-то передать, тут нужно постоянное дополнение одной и той же строки, которая в будущем станет полноценной командой. Командные же действия требуют определённого синтаксиса, т.е. сложных инструкций для своей работы.
Я был бы очень рад сделать методы с параметрами и без для реализации этого всего, только вот параметров может быть слишком много (выше возможного на c#) и также нужно следить за типами параметров в таком случае, что отдельный напряг.
0
|
|
|
14138 / 9367 / 1350
Регистрация: 21.01.2016
Сообщений: 35,243
|
||
| 30.04.2021, 06:22 | ||
|
Если у вас некий процесс формирующий строку, то вам нужен StringBuilder (если вам поступают фрагменты строк) или коллекция неких типов на основе которой финальная строка и будет сформирована. А текущая хотелка адекватной не выглядит.
0
|
||
| 30.04.2021, 06:22 | |
|
Помогаю со студенческими работами здесь
18
Конструктор неявного преобразования из double и System::String ^ в ref class REF Ariston BCB31AAE нужна прошивка индикации, Не работает, выдает ошибку F9 Полиморфизм: ошибка преобразование типа из "ref cl_child" в "ref cl_proto" невозможно Ошибка Cannot convert from 'ref decimal' to 'ref decimal? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|