Многие образцы кода в C# содержат get
и set
кодовые блоки. В чем их цель? Я копирую эти блоки сыворотки, они появляются в образце кода, но понятия не имеют, для чего он используется. Может кто-нибудь, пожалуйста, объясните мне это?Какова цель get: set?
ответ
На английском они являются сеттерами и геттерами.
Надеюсь, что вы научитесь инкапсуляции, сеттерам и геттерам, возникшим из-за инкапсуляции.
Снова на простом английском языке, сеттеры и геттеры предоставляют вам доступ к собственности, которую вы определяете.
public int foo { get; set; }
Это определяет свойство. Это в основном как публичное поле, но когда дело доходит до размышлений, все по-другому. В C# /. NET принято использовать свойства для общедоступных вещей. Вы можете сравнить его с методами getter/setter в Java.
Удивительная вещь сейчас, что вы также можете использовать обычай получить/установить код или сделать set
менее заметными, чем get
. Это позволяет использовать преимущества методов getter/setter без уродства вызовов методов вместо доступа к ресурсам.
public int foo {
get { return this.some_foo; }
set { this.some_foo = value; this.run_code_after_change(); }
};
Геттеры и сеттера позволяют объединить пару функций в одно свойства, и позволяют использовать синтаксис, который выглядит как выражение доступа члена или присваивания вместо синтаксиса, который выглядит как вызов явной функции.
Вот небольшой пример: вместо этого
class Example {
private int x;
public int GetX() {return x;}
public void SetX(int value) { x = value;}
}
Example e = new Example();
e.SetX(123);
Console.WriteLine("X = {0}", e.GetX());
они позволяют сделать это:
class Example {
public int X {get;set;}
}
Example e = new Example();
e.X = 123;
Console.WriteLine("X = {0}", e.X);
Синтаксис второго фрагмента кода легче читать, потому что X
выглядит как переменная. В то же время второй фрагмент обеспечивает тот же уровень encapsulation, позволяя вам скрывать реализацию за свойством.
ли вы имеете в виду это ?:
public int SomeValue { get; set; }
Это в основном синтаксический стенография для этого:
private int someValue;
public int SomeValue
{
get { return someValue; }
set { someValue = value; }
}
Что само по себе является в основном сокращением для этого:
private int someValue;
public int GetSomeValue() { return someValue; }
public void SetSomeValue(int value) { someValue = value; }
(Хотя компилятор использует разные соглашения для имен вещей, когда он это делает.)
Поскольку это относится к ООП, это инкапсуляция данных. Идея состоит в том, что объекты должны скрывать свои данные и раскрывать функциональность, а не просто подвергать данные напрямую. Поэтому вы не обязательно изменяете someValue
непосредственно снаружи объекта. Вы вызываете метод на объекте и снабжаете его значением. Внутренне объект обрабатывает фактическое хранение своих данных.
get
и set
- вид синтаксического сахара.Это более читаемый способ реализации функций, не получающих параметров, где вы можете вставить, например, проверку (в сеттер) или вычисления по полям в геттерах. Скобки бесполезны в такой функции.
- 1. Какова цель методов Get & Set в C#?
- 2. Какова цель set {return; }?
- 3. Цель Get Set
- 4. Какова цель свойства GET SET, просто объявив его нормальным?
- 5. Какова цель «Number()» в методе indexedDB get()
- 6. Какова цель второго метода методов GET?
- 7. Какова сложность простой функции Set, Get, toString?
- 8. Какова цель "?"
- 9. Какова цель сортированных наборов?
- 10. Какова цель LoggingChannel.Level
- 11. Какова цель character_set_connection?
- 12. Какова цель перекрестной проверки?
- 13. Какова цель HTTP PUT?
- 14. Какова цель статичности здесь?
- 15. Какова цель постоянных объектов?
- 16. Какова цель ICollection в классе POCO (EF)?
- 17. AS3 get/set против переназначения значения
- 18. Какова цель добавления заголовка в сообщение http/get в java?
- 19. Какова цель удаления $ get prop в угловом провайдере?
- 20. Какова цель std :: rank?
- 21. Какова цель $ _POST?
- 22. Какова цель IApplicationBuilder.New()
- 23. Какова цель метода IntStream.empty()?
- 24. Какова цель IAsyncStateMachine.SetStateMachine?
- 25. Какова цель пакета
- 26. Какова цель заявления `pass`?
- 27. Какова цель "@SuppressWarnings (" unchecked ")"?
- 28. Какова цель этого javascript?
- 29. Какова цель константы PHP_DEBUG?
- 30. Какова цель configSections?
Недвижимость. http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx –
Читайте об объектно-ориентированном программировании и [Инкапсуляция] (http://en.wikipedia.org/wiki/Encapsulation_ (объектно-ориентированное программирование)) – Habib
Вы пробовали это: http://www.google.com/search?q=.net+c%23+get+set? – Olexander