Вхід Реєстрація
Реклама
Ваше рекламне місце
Забронюйте цей слот без конкуренції на обраний період.
Купити рекламу →
Логотип телеграм спільноти - Devlog без QA | Розробка ігор
Додано 06 гру 2025 🌐 UK

Devlog без QA | Розробка ігор

@GameDevelopmentUA
Кількість підписників: 624
Фото: 287
Відео: 108
Посилання: 536
Опис:
Unity/Новини/Ідеї/Натхнення й інший якісний (а можливо і не дуже) контент тут! Зв’язок: @DevAndrew Анти-скам бот: @IndieSafeBot
Джерело

Devlog без QA | Розробка ігор | Коротко, а може і не дуже, про refКлючове слово ref використовується д...

Логотип телеграм спільноти - Devlog без QA | Розробка ігор Devlog без QA | Розробка ігор @GameDevelopmentUA
419 Охват/переглядів 2026-01-30 18:06 Повідомлення №516
📱 Коротко, а може і не дуже, про ref

Ключове слово ref використовується для передачі параметрів за посиланням і створення посилальних змінних. За замовчуванням параметри передаються за значенням, а значення повертаються за значенням. Додавання ref у сигнатурі методу та при його виклику змінює поведінку на передачу за посиланням.Наприклад: public void Increment(ref int x) { x += 1; // Змінює початкову змінну виклику}int a = 5;Increment(ref a); // a стає 6
Тут і визначення методу, і виклик використовують ref. Виклик має використовувати той самий модифікатор, що й у сигнатурі, і до змінної-аргумента необхідно застосувати ref.Для чого це потрібно?1️⃣ Щоб змінювати значення аргументу напряму

Все просто. Це потрібно, щоб метод працював напряму з оригінальною змінною, а не з її копією. Тобто ти передаєш у метод не “значення”, а “саму змінну”.2️⃣ Щоб уникати копіювання великих структур struct передаються за значенням, тобто копіюються. Для великих структур це дорого.void Update(ref BigStruct data) { }
3️⃣ Для оптимізації hot-path коду

У місцях, де код виконується дуже часто (рендер, фізика, математика):• ref зменшує кількість копій;• зменшує тиск на GC (опосередковано);• дає більш передбачувану роботу з памʼяттю. Саме тому ref активно використовується в Span<T>, ReadOnlySpan<T> та низькорівневому . NET коді👀 Нюанси:Ініціалізація перед викликом. Перед викликом Foo(ref x) змінна x уже повинна містити деяке значення.Необхідність явного ref. І в сигнатурі методу, і при його виклику має бути ключове слово ref.Взаємодія з іншими модифікаторами. ref сумісний з readonly для полів (в ref-структурі). До методів з async або yield застосовувати ref не можна, оскільки їхня поведінка не гарантує безпечності посилань.ℹ️ Джерела: [База] / [readonly/async]✈️ Gamedev | #уроки #посилання #ref #async #csharp