@MishkaVNorky

Property и Fields?

Всем привет. У меня вопрос выделяет ли память Property ?
Как понимаю не должно ибо смысла нет, тогда логичнее было использовать методы.

Но в новой версии C# можно использовать auto Property. То есть propert может быть сразу переменной.

int CurrentHealth { get; set; }
CurrentHealth = 100;

int CurrentHealth 
{

get { .. }
set { ... }

}


В каком случаи Property выделяет память?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Да, при создании автосвойства создаётся скрытая переменная - данные должны где-то храниться.

Эта переменная создаётся с хитрым именем (с запрещёнными в c# символами в имени переменной). Можно увидеть это таким способом:
class TestClass
{
    private int _a;
    public int A
    {
        get { return _a; }
        set { _a = value; }
    }

    public int B { get; set; }
}

var testClass = typeof(TestClass);
var fields = testClass.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var fieldInfo in fields)
{
    Console.WriteLine(fieldInfo.Name);
}
// результат:
// _a
// <B>k__BackingField
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Meloman19
Свойства - это лишь абстракция. Любое свойство с геттером и сеттером по сути разворачивается в два обыкновенных метода. Для программы они ничем не выделяются особенным, это нужно лишь программисту.

В этих самых геттерах и сеттерах ты можешь работать с полями, как и в любом другом методе класса.

Автосвойство - это лишь упрощение, если требуется свойство, в котором кроме установки значения одного поля, иной логики нет. В закулисье автосвойство просто само по себе создаёт поле и два (или один) метод, который возвращает значение этого поля (или устанавливает).

Что касается памяти: поле занимает место в памяти и для каждого экземпляра своё место. Геттеры и сеттеры свойства, как и обыкновенные методы - только один раз в памяти.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
PHYGITALISM Москва
от 70 000 руб.
ИММА Москва
До 120 000 руб.
Banzai.Games Москва
от 150 000 до 250 000 руб.
24 марта 2019, в 17:59
15000 руб./за проект
24 марта 2019, в 17:57
65000 руб./за проект
24 марта 2019, в 17:40
100000 руб./за проект