Если вы думаете, что это проблема, создайте быстрый тест. Должно быть достаточно легко создать основной класс с помощью одного или двух виртуальных методов, а затем создать 100 производных классов, каждый из которых аналогичным образом переопределяет методы основного класса. Что-то вроде:
public class MainCard {
// properties
// 2 methods
}
Загрузите и запустите вашу программу (что-то простое, которое просто создает экземпляр объекта MainCard
) и определите, сколько памяти она занимает.
Затем создайте 100 производных классов которые переопределяют методы в MainCard
. Реализации замещенных виртуальных методов могут быть идентичными.
public class Card01 : MainCard {
// override both MainCard methods
}
public class Card02 : MainCard {
// copy Card01 implementation here
}
Сделайте это для 100 классов. Посмотрите, сколько памяти требуется.
Помните, что в C# код класса даже не обязательно загружается в память, пока не будет создан экземпляр класса, а затем вы получите только метаданные. за исключением фактически вызываемых функций. Компилятор Just In Time по мере необходимости выполняет загрузку и компиляцию собственного кода. Если, конечно, вы не выполните предварительную компиляцию при установке.
Также помните, что однажды скомпилированный код будет оставаться в памяти на протяжении всего срока службы программы. Так что, если все возможные карты можно использовать в одной игре, то вам необходимо убедиться, что скомпилированный код для всех карт уместится в памяти.