Да, в вашем случае нет дублирования, но есть постоянный switch для каждого элемента. Возможно у меня
"экономия на спичках" - в игре может быть множество действий в секунду. Хотя, скорее всего, с делегатами будет производительность такая же, как и постоянный switch. (Edit) Но я не знаю как реализовать другие способы (через делегаты), чтобы сравнить производительность.
Спасибо, за разъяснение. Эти структуры являются вершинами графа. Граф строится динамически во время поиска пути (A*) - здесь очень критична производительность. Совершенно нельзя напрягать GC. Каждая структура должна содержать информацию о действии (ребре), которое создало эту вершину. Тут вижу 2 варианта: хранить либо ID действия, либо ссылку на само действие (объект). Объект по ссылке никак не меняется во время работы. Под все структуры память выделена заранее (структуры в массивах), чтобы в процессе избежать проблем с GC.
Во время работы алгоритма, структуры копируются, полю с ссылкой присваивается ссылка на другой объект. Поэтому readonly никак.
да, ссылка нужна только для доступа к свойствам объекта. Если хранить вместо ссылки - int индекс на объект в массиве, то приходится обращаться через массив к свойствам данного объекта - что дороже.
Если shallow копия, то с GC проблем не должно быть?