Я заметил, что примитивные типы в C# действительно просто реализованы как псевдонимы для структур, определенных в пространстве имен System
, например. ulong
является псевдонимом System.UInt64
, который имеет тип struct
. Есть ли дополнительные дополнительные временные накладные расходы для примитивных типов в C#, возникающих из этого? Скажем, действительно ли ulong
потребляет всего 8 байт памяти?Структурировать служебные данные псевдонимов примитивного типа C#?
В духе, это должно проверить накладные расходы памяти:
using System;
class Program
{
static void Main()
{
long beforeAlloc = GC.GetTotalMemory(false);
ulong[] myArray = new ulong[System.Int32.MaxValue];
myArray[0] = 1;
long afterAlloc = GC.GetTotalMemory(false);
Console.WriteLine(((afterAlloc - beforeAlloc)/System.Int32.MaxValue).ToString());
}
}
Но documentation указывает, что GC.GetTotalMemory()
метод извлекает только число байтов в настоящее время думал выделяться, поэтому не существует простой способ найти без более сложного профилирования памяти?
Нет накладных расходов. – Lee
Каковы ваши рассуждения, почему накладные расходы? – Shoe