Свойства с доступом `get` и `set` в C# фактически не занимают памяти непосредственно, так как они представляют собой методы, а не поля. Когда вы объявляете свойство, компилятор создает методы доступа (геттеры и сеттеры), которые могут использоваться для работы с внутренними данными, но эти методы не влияют на общий объем памяти, занимаемый экземпляром класса.
Объем памяти, о котором вы упоминаете (136 байт), скорее всего, связан не с самим свойством, а с полями класса, которые хранят данные. Если в вашем классе есть области, которые потребляют память (например, поля, массивы, коллекции и т. д.), они и составляют этот объем.
Можно привести пример:
```csharp
public class Sample
{
private int _field; // Например, это поле занимает 4 байта
public int Property
{
get { return _field; } // Метод доступа (геттер) не занимает дополнительной памяти
set { _field = value; } // Метод доступа (сеттер) не занимает дополнительной памяти
}
}
```
Общий объем памяти, занимаемый экземпляром класса `Sample`, определится размером поля `_field` и, возможно, другими полями, определенными в этом классе. Например, если у вас есть несколько полей, их размеры суммируются.
Стандартные свойства `get` и `set` по сравнению с пользовательскими реализациями (если они не содержат добавленных полей или другой логики, которые бы увеличивали объем данных) не влияют на объем занимаемой памяти, так как методы доступа не создают новых экземпляров классов или дополнительных данных.
Если вы хотите узнать, сколько памяти занимает ваш класс или структура, вы можете использовать инструменты профилирования памяти в Visual Studio или специальные утилиты для анализа памяти, такие как dotMemory.
В конечном счете, при проектировании классов старайтесь избегать перегрузки классами, у которых много полей и сложной логики доступа, так как это может сказаться на производительности и управлении памятью, но использование свойств `get` и `set` само по себе не приведет к значительному увеличению использования памяти.