Как найти размер объекта класса и статического класса ?
1. я хочу знать, можно ли найти размер объекта класса.
2.Если объект класса не содержит никаких данных(объект с нулевым значением), то какой размер будет показан.
3. Мы можем найти размер статического класса .
Что я уже пробовал:
Рассмотрим следующие классы:
public class Student { public int ID {get;set;} public string Name {get;set;} public string StuClass{get;set;} } public static class Teacher { public int EmpID{get;set;} public string Name{get;set;} public sting MonitoringClass{get;set;} }
каков будет результат следующего :
Student std1=new Student{1,"Test","Class2"}; Student std2=new Student(); int size1=sizeof(std1);//object has some data int size2=sizeof(std2);//null object int size3=Teacher{1,"TeacherTest","Class2"};//static class
Когда я пытаюсь выполнить его ,я получаю следующую ошибку:
1. ошибка CS0246: не удалось найти тип или имя пространства имен "std1". Вам не хватает ссылки на сборку?
1. 'GridToExcel.Тест.Teacher' не имеет предопределенного размера, поэтому sizeof можно использовать только в небезопасном контексте (рассмотрим использование System.Runtime.InteropServices.Marshal.SizeOf) D:\SampleProjects\GridToExcel\GridToExcel\Test.aspx.cs 32 25 GridToExcel
что я делаю не так??
Richard MacCutchan
Почему бы просто не запустить этот код, и вы сами увидите результаты?
pranav8265
я получаю следующую ошибку :
ошибка CS0246: не удалось найти тип или имя пространства имен "std1". Вам не хватает ссылки на сборку?
Philippe Mori
Обычно вам не нужно знать фактический размер объекта в управляемом мире... Таким образом, ваш вопрос в основном неуместен в .NET, за исключением целей взаимодействия.
Также сообщение об ошибке сообщит вам о проблемах. По существу:
Ошибка №1: sizeof
ожидайте тип, а не переменную.
Ошибка №2: sizeof
не может быть использован в этом контексте. Может быть Marshal.SizeOf
может быть, это то, что вам нужно.