Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Devlog без QA | Розробка ігор
Añadido 06 dic. 2025

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

@GameDevelopmentUA
Número de suscriptores: 632
Fotos: 275
Videos: 105
Enlaces: 520
Descripción:
Unity/Новини/Ідеї/Натхнення й інший якісний (а можливо і не дуже) контент тут! Зв’язок: @DevAndrew Анти-скам бот: @IndieSafeBot
Fuente

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

Logotipo de la comunidad de telegram - Devlog без QA | Розробка ігор Devlog без QA | Розробка ігор @GameDevelopmentUA
419 Vistas/Alcance 2026-01-30 18:06 Mensaje №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