TGViewer
Григорий Дядиченко Григорий Дядиченко @dev_game · 2.66K subscribers
Post #662 1.18K
Григорий Дядиченко Задачка "Статический generic класс" Пишу небольшой репозиторий, который покажет пример работы с рефлексей и атрибутами в Unity, и тут сделаем небольшую задачку на знание шарпа вдохновлённый им. Есть класс public static class UIRouteManager<T> и у него конструктор…
Решение "Статический generic класс"

В комментариях к задаче там уже всё разобрано. Но напишем решение отдельно.

Правильный ответ. Если ничего до этого не вызывалось, то в момент первого вызова методов ShowUI в лог напишется "test". Причём по одному разу для каждой реализации. Под JIT платформами. И связано это с двумя нюансами.

1. Как работает статический конструктор типов

Под JIT платформами статический конструктор типа вызывается при первом обращении к типу (или создании экземпляра типа для не статических классов). Хотя строго говоря это зависит от флагов компиляции, но в Unity можно говорить чуть проще. На эту тему можно почитать
спецификацию от майкрософта, как говорили в комментах.

Под AOT платформами у юнити видимо снова баг, что логи не пишутся, как было тут
https://issuetracker.unity3d.com/issues/static-constructor-doesnt-work-with-il2cpp Так как на айос логи вообще не появляются. Хотя сам конструктор работает, так что всё в порядке.

2. Как работает шаблонный (генерик) параметр для статических классов

По сути, когда вы пишете UIRouteManager<string> и UIRouteManager<bool> — это два разных типа. Поэтому конструктор вызовется дважды.

Так что под виндой в редакторе лог появится дважды. А под AOT платформами его судя по всему не будет.

#задачка
Docs Classes - C# language specification This chapter covers class declarations, including all member types that can be included in classes. This includes generic classes as well as non-generic classes.
  • 👍 1
More from @dev_game
  1. Oct 16, 2026Когда с ходу за неделю собралось больше 700 пользователей
  2. Oct 16, 2026Григорий Дядиченко pinned a photo
  3. Oct 16, 2026Разыгрываем AirPods Pro 3 С 16 октября по 15 ноября в MES идёт розыгрыш. Главный приз — Ai…
  4. Oct 16, 2026В общем да, на релизе оказывается сразу возникает слишком много дел
  5. Oct 14, 2026Куда пропал? Всем привет. Куда я пропал? Да замотался, выиграл два покерных турнира и доде…
  6. Oct 8, 2026Метрики, метрики и ещё раз метрики https://app.mes-poker.ru Эхх, со своим продуктом руки с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →