Да, пустая переменная имеет тот же размер, что и заполненная переменная в C #, если переменная является типом значения или ссылкой: она занимает то же пространство памяти.
Например, int
занимает 4 байта и long
занимает 8 байтов.
То же самое для ссылок, назначенных или нет.
Ссылка на x32 занимает 4 байта, но в x64 - 8 байтов.
КаждыйТип значения принимает размер значения с добавлением размера скрытого скрытого указателя (скрытой ссылки).
Если он не одинаковый, размер для всех типов основан на массивах, таких как value[]
и строках:в этом случае начальный размер равен размеру указателя, а затем пространство увеличивается при заполнении данных.
Следовательно, объем памяти массива int увеличивается при добавлении целых чисел, и он равен строке
Это потому, что иногда предпочтительнее использовать StringBuilder вместо String и избегать использования ToList (), например, когда он бесполезен.
К этому необходимо добавитьРекомендацииметодов и виртуальных таблиц.
Вы можете получить размер сериализуемого экземпляра, исключая справочные таблицы и таблицы методов, используя:
using System.Runtime.Serialization.Formatters.Binary;
static public long SizeOf(object obj)
{
if ( obj == null ) return 0;
try
{
using ( MemoryStream stream = new MemoryStream() )
{
new BinaryFormatter().Serialize(stream, obj);
return stream.Length;
}
}
catch
{
return -1;
}
}