Как найти размер класса в C#

public class A
{
  int x;
  float y;
}

Как найти размер класса в C#. Есть ли любой оператор как Sizeof (), который раньше был в C++

15
задан user 1 July 2012 в 10:00
поделиться

3 ответа

Краткий ответ:

Нет.

Длинный ответ:

Вы можете сделать это, только если вы печатаете с фиксированным макетом и не имеете управляемых элементов. Структуры фиксированы по умолчанию. К классам можно отнести фиксированную планировку.

(Я не показываю, как это сделать, поскольку вам это действительно не нужно. Это важно только при взаимодействии.)

9
ответ дан 1 December 2019 в 01:23
поделиться

Вы могли бы сериализовать класс в поток памяти и затем получить размер оттуда, но я бы не рекомендовал делать это, если вам это не нужно.

2
ответ дан 1 December 2019 в 01:23
поделиться

Если вы используете оператор sizeof , вы получите размер указателя (который, очевидно, будет одинаковым для всех объектов).

Вы можете написать свой собственный метод и выполнить итерацию (с использованием отражения) по всем элементам объекта (или тем, которые вас интересуют) и добавить размер каждого отдельного элемента.

Сложная часть могла бы определить размер члена, который не является родным типом ... ваш метод должен быть в некоторой степени «рекурсивным».

Если бы вы реализовали вышеупомянутую идею, у вас был бы приблизительный размер объекта.

0
ответ дан 1 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: