Есть ли ограничения на количество свойств в классе .NET? - PullRequest
17 голосов
/ 10 июня 2011

Получена спецификация для добавления более 800 свойств к объекту.Есть ли у них какие-либо «ограничения» на количество свойств, которые объект может иметь в C # (или .NET)?

Имеет ли какое-либо влияние на их производительность объекты этого класса с таким количеством свойств?

Спасибо!

1 Ответ

36 голосов
/ 10 июня 2011

Метаданные могут иметь до 24-битных ссылок / определений на сборку. Будучи собственностью, вам нужно 2 метода для каждого свойства. Следовательно, предел будет 23-разрядным или 1 << 23 - 1 для всей сборки.

Обновление:

Если это только свойства только для чтения, предел будет 1 << 24 - 1.

Ответ на второй вопрос:

Нет, производительности не будет. Простые свойства могут быть встроены в JIT.

Некоторые мысли:

Вы никогда не достигнете вышеуказанного предела. Imaging, имеющий 16 миллионов свойств. Для этого также потребуется 16 миллионов строк, хранящихся в именах. Скажем, среднее имя составляет 8 символов, затем вы смотрите на размер таблицы строк ~ 256 МБ (имя свойства + имя метода), а затем вы еще даже не начали кодирование. Просто мысль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...