public class A
{
int x;
float y;
}
Как найти размер класса в C#. Есть ли любой оператор как Sizeof (), который раньше был в C++
Краткий ответ:
Нет.
Длинный ответ:
Вы можете сделать это, только если вы печатаете с фиксированным макетом и не имеете управляемых элементов. Структуры фиксированы по умолчанию. К классам можно отнести фиксированную планировку.
(Я не показываю, как это сделать, поскольку вам это действительно не нужно. Это важно только при взаимодействии.)
Вы могли бы сериализовать класс в поток памяти и затем получить размер оттуда, но я бы не рекомендовал делать это, если вам это не нужно.
Если вы используете оператор sizeof
, вы получите размер указателя (который, очевидно, будет одинаковым для всех объектов).
Вы можете написать свой собственный метод и выполнить итерацию (с использованием отражения) по всем элементам объекта (или тем, которые вас интересуют) и добавить размер каждого отдельного элемента.
Сложная часть могла бы определить размер члена, который не является родным типом ... ваш метод должен быть в некоторой степени «рекурсивным».
Если бы вы реализовали вышеупомянутую идею, у вас был бы приблизительный размер объекта.