Могу ли я удалить {получить; задавать; } в 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
Методы проще.