Могу ли я удалить {получить; задавать; } в C#

Возможный дубликат:
C#: Могу ли я удалить "{получить; задавать; }"?

Мой код имеет сотни строк, которые выглядят так:

public string abc { get; set; }
public string def { get; set; }

У всех есть { get; set; } в конце их.

Меня интересует, есть ли способ, которым я могу очистить свой код и даже устранить необходимость { get; set; } в то же время делая их публичными.

Я знаю, что это не большая проблема, но я бы хотел как можно больше очистить свой код.

6 ответов

Не красиво Это {get;set;} что делает их автоматически реализованными свойствами; без них они становятся полями. Вы действительно не хотите публичных полей, так что оставьте это в покое.

На самом деле, вы не решаете здесь никаких проблем; Оставь это. Это нормально (по крайней мере, так как были введены автоматически реализованные свойства), и {get;set;} не добавляет к количеству строк и т. д.

Вы можете, но они больше не будут публичными свойствами и вместо этого будут принимать форму публичных переменных (что, конечно, не является преференциальным и будет осуждено, так что используйте по своему усмотрению):

public string abc;
public string def;

Я бы сказал, сохранить их как свойства, автоматически реализуемые свойства - это Божья посылка, и ваша проблема беспочвенна.

{ get; set; } означает, что у вас есть свойство setter и getter (точно говоря, это автоматически реализованные свойства) для поля. Не стоит иметь в классе открытые поля, и поэтому вы должны инкапсулировать свои поля со свойствами. Так что хорошо, что они у тебя есть.

Если вы удалите { get; set; }, вы получите публичное поле вместо публичной собственности. Свойства часто являются предпочтительным способом представления простых членов ваших классов, поскольку они позволяют скрыть их реализацию и изменить ее, не нарушая зависимые компоненты.

Если у вас много повторений кода, рассмотрите возможность использования базовых классов / наследования для общих свойств (и методов) для очистки вашего кода.

:) вы должны были видеть свойство с отступающим полем, как показано ниже:

        private string _test;
        public string Test
        {
            get { return _test; }
            set { _test = value; }
        }

теперь требуется очистка:)

Если есть классы с одинаковыми свойствами, вы можете расширять друг друга.

class Person
{
    public string Name { get; set; }
}

class Student : Person
{
    public string StudentId { get; set; }
}

class ShopKeeper : Person
{
    public Shop Shop { get; }
}

В приведенном выше примере Student а также ShopKeeper унаследует имущество NameЭто означает, что вы должны написать это только один раз.

Вы не можете сделать get а также set Методы проще.

Другие вопросы по тегам