Какие методы есть у свойства программирование

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 28 февраля 2014; проверки требуют 11 правок.
Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.
При применении свойств
- можно задать значение по умолчанию, которое будет храниться в данном свойстве (или указать, что никакого значения по умолчанию не предполагается);
- можно указать, что это свойство только для чтения.
Как правило, свойство связано с некоторым внутренним полем объекта. Но свойству вообще может не быть сопоставлена ни одна переменная объекта, хотя пользователь данного объекта имеет дело с ним так, как если бы это было настоящее поле.
Свойства повышают гибкость и безопасность программирования, поскольку, являясь частью (открытого) интерфейса, позволяют менять внутреннюю реализацию объекта без изменения его полей. Свойства значительно облегчают модификацию программы в тех случаях, когда класс изначально был реализован с нарушением инкапсуляции, а в дальнейшем потребовалось изменить способ доступа к полю. При отсутствии в языке механизма свойств потребовалось бы искать и заменять обращения к полям на методы доступа.
Методы свойств[править | править код]
Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор (accessor); метод, задающий новое значение свойства, — мутатор (mutator).[источник не указан 1647 дней] В языках программирования, не поддерживающих свойства, например, C++ и Java, пара из акцессора и мутатора является общепринятым суррогатом для их замены.
Принято называть методы свойств именем свойства с приставками get и set: например, для свойства Xyzzy — get_Xyzzy и set_Xyzzy (традиционный стиль Си) либо GetXyzzy и SetXyzzy (стиль CamelCase). В связи с этой схемой наименования за методами свойств закрепились жаргонные названия getter и setter.
Примеры[править | править код]
Свойства в C#[править | править код]
Свойства в C# — поля с логическим блоком, в котором есть ключевые слова get и set.
Пример класса со свойством:
{
private int p_field;
public int Field
{
get
{
return p_field;
}
private set
{
p_field = value;
}
}
}
Свойства в VB.NET[править | править код]
Пример реализации в VB.NET. Если нужно реализовать свойство только для чтения или только для записи, применяются модификаторы ReadOnly и WriteOnly. Свойство может быть параметризованным. Также может быть свойством по умолчанию, для этого необходимо добавить модификатор Default
Dim F As New Foo
F.Data = 5
F.Item(0) = 5
F(0) = 5 ‘Запись в свойство
Console.WriteLine(F(0)) ‘Чтение свойства
End Sub
Public Class Foo
Private m_Data As Integer
Private m_Arr() As Integer = {1, 2, 3, 4, 5}
Public Property Data As Integer
Set(Value As Integer) ‘Сеттер
m_Data = Value
End Set
Get
Return m_Data ‘Геттер
End Get
End Property
Public Default Property Item(Param As Integer) As Integer ‘Параметризованное свойство по умолчанию
Set(Value As Integer)
m_Arr(Param) = Value
End Set
Get
Return m_Arr(Param)
End Get
End Property
End Class
Свойства в Delphi[править | править код]
Для описания свойства в Delphi служит слово property.
Пример класса со свойством:
private
FMyField: Integer;
procedure SetMyField(const Value: Integer);
function GetMyField: Integer;
public
property MyField: Integer read GetMyField write SetMyField;
end;
function TMyClass.GetMyField: Integer;
begin
Result := FMyField;
end;
procedure TMyClass.SetMyField(const Value: Integer);
begin
FMyField := Value;
end;
Свойства в ActionScript[править | править код]
{
private _foo : int;
public function get foo () : int {
return _foo;
}
public function set foo (foo : int) : void {
_foo = foo;
}
}
Свойства в Objective C[править | править код]
{
NSString *var_name;
}
@property(retain) NSString *var_name;
@end
@implementation Company
@synthesize var_name;
@end
Свойства в Ruby[править | править код]
Описания свойства в Ruby ничем не отличается от описания метода. Например, для создания свойства duration у класса Song нужно описать методы duration и duration=(value)
def duration
@duration
end
def duration=(value)
@duration = value
end
end
Однако простое обращение к внутренней переменной объекта может быть заменено на вызов метода attr_accessor :duration
attr_accessor :duration
end
Более интересным будет пример создания свойства duration_in_minutes, которое будет возвращать или устанавливать время длительности в минутах:
def duration_in_minutes
@duration/60.0
end
def duration_in_minutes=(value)
@duration = (value*60).to_i
end
end
При этом изменение свойства duration_in_minutes повлияет на свойство duration. Например
song.duration_in_minutes = 1.2
print song.duration # напечатает 72
Свойства в Python[править | править код]
Набор методов с декораторами определяет способы работы со свойством (чтение, запись, удаление). Если какой-то из методов убрать (за исключением @property), теряется возможность работать со свойством соответствующим образом.
Пример класса со свойством:
def __init__(self):
self.__x = None
@property
def x(self):
return self.__x
@x.setter
def x(self, value):
self.__x = value
@x.deleter
def x(self):
self.__x = None
>>> a.x
>>> a.x = 2
>>> a.x
2
>>> del a.x
>>> a.x
>>>
См. также[править | править код]
- Событие
- Метод
Источник
Методы свойств
Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор (accessor); метод, задающий новое значение свойства — мутатор (mutator). В языках программирования, не поддерживающих свойства, например C++ и Java, пара из акцессора и мутатора является общепринятым суррогатом для их замены.
Принято называть методы свойств именем свойства с приставками get и set: например, для свойства Xyzzy — get_Xyzzy и set_Xyzzy (традиционный стиль Си) либо GetXyzzy и SetXyzzy (стиль CamelCase). В связи с этой схемой наименования за методами свойств закрепились жаргонные названия getter и setter.
Примеры
Свойства в C#
Свойства в C# — поля с логическим блоком, в котором есть ключевые слова get и set.
Пример класса со свойством:
class MyClass
{
private int p_field;
public int Field
{
get
{
return p_field;
}
private set
{
p_field = value;
}
}
}
Свойства в VB.NET
Пример реализации в VB.NET. Если нужно реализовать свойство только для чтения или только для записи, применяются модификаторы ReadOnly и WriteOnly. Свойство может быть параметризованным. Также может быть свойством по умолчанию, для этого необходимо добавить модификатор Default
Sub Main
Dim F As New Foo
F.Data = 5
F.Item(0) = 5
F(0) = 5 ‘Запись в свойство
Console.WriteLine(F(0)) ‘Чтение свойства
End Sub
Public Class Foo
Private m_Data As Integer
Private m_Arr() As Integer = {1, 2, 3, 4, 5}
Public Property Data As Integer
Set(Value As Integer) ‘Сеттер
m_Data = Value
End Set
Get
Return m_Data ‘Геттер
End Get
End Property
Public Default Property Item(Param As Integer) As Integer ‘Параметризованное свойство по умолчанию
Set(Value As Integer)
m_Arr(Param) = Value
End Set
Get
Return m_Arr(Param)
End Get
End Property
End Class
Свойства в Delphi
Для описания свойства в Delphi служит слово property.
Пример класса со свойством:
TMyClass = class
private
FMyField: Integer;
procedure SetMyField(const Value: Integer);
function GetMyField: Integer;
public
property MyField: Integer read GetMyField write SetMyField;
end;
function TMyClass.GetMyField: Integer;
begin
Result := FMyField;
end;
procedure TMyClass.SetMyField(const Value: Integer);
begin
FMyField := Value;
end;
Свойства в ActionScript
class MyClass
{
private _foo : int;
public function get foo () : int {
return _foo;
}
public function set foo (foo : int) : void {
_foo = foo;
}
}
Свойства в Objective C
@interface Company : NSObject
{
NSString *name;
}
@property(retain) NSString *name;
@end
@implementation Company
@synthesize name;
@end
Свойства в Ruby
Описания свойства в Ruby ничем не отличается от описания метода. Например, для создания свойства duration у класса Song нужно описать методы duration и duration=(value)
class Song
def duration
@duration
end
def duration=(value)
@duration = value
end
end
Однако простое обращение к внутренней переменной объекта может быть заменено на вызов метода attr_accessor :duration
class Song
attr_accessor :duration
end
Более интересным будет пример создания свойства duration_in_minutes, которое будет возвращать или устанавливать время длительности в минутах:
class Song
def duration_in_minutes
@duration/60.0
end
def duration_in_minutes=(value)
@duration = (value*60).to_i
end
end
При этом изменение свойства duration_in_minutes повлияет на свойство duration. Например
song = Song.new
song.duration_in_minutes = 1.2
print song.duration # напечатает 72
См. также
- Событие
- Метод
Категории:
- Концепции языков программирования
- Объектно-ориентированное программирование
Wikimedia Foundation.
2010.
Смотреть что такое “Свойство (программирование)” в других словарях:
Свойство объекта — в объектно ориентированном программировании характеристика объекта. Обычно свойства изменяются с помощью методов. См. также: Объектно ориентированное программирование Финансовый словарь Финам … Финансовый словарь
Объектно-ориентированное программирование — Эта статья во многом или полностью опирается на неавторитетные источники. Информация из таких источников не соответствует требованию проверяемости представленной информации, и такие ссылки не показывают значимость темы статьи. Статью можно… … Википедия
Автоматное программирование — Автоматное программирование это парадигма программирования, при использовании которой программа или её фрагмент осмысливается как модель какого либо формального автомата. В зависимости от конкретной задачи в автоматном программировании… … Википедия
Инкапсуляция (программирование) — У этого термина существуют и другие значения, см. Инкапсуляция. В языках программирования инкапсуляция имеет одно из следующих значений, либо их комбинацию: языковой механизм ограничения доступа к определённым компонентам объекта; языковая… … Википедия
Делегирование (программирование) — В объектно ориентированном программировании существуют два смежных понятия делегирования. В современном понимании это означает свойство языка программирования использовать правила поиска метода для диспетчеризации так называемых self calls… … Википедия
Объектно-ориентированное программирование на Python — Объектно ориентированное программирование на Python программирование на Python с использованием парадигмы ООП: с самого начала Python проектировался как объектно ориентированный язык программирования[1]. Содержание 1 Введение 1.1 … Википедия
Математическое программирование — математическая дисциплина, посвященная теории и методам решения задач о нахождении экстремумов функций на множествах, определяемых линейными и нелинейными ограничениями (равенствами и неравенствами). М. п. раздел науки об… … Большая советская энциклопедия
МАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ — математическая дисциплина, посвященная теории и методам решения задач о нахождении экстремумов функций на множествах конечномерного векторного пространства, определяемых линейными и нелинейными ограничениями (равенствами и неравенствами). М. п.… … Математическая энциклопедия
ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ — математическая дисциплина, посвященная теории и методам решения задач об экстремумах линейных функций на множествах n мерного векторного пространства, задаваемых системами линейных неравенств и равенств; Л. п. один из разделов математического… … Математическая энциклопедия
Объектно-ориентированное программирование на Питоне — С самого начала Питон проектировался как объектно ориентированный язык программирования [1]. Содержание 1 Введение 1.1 Принципы ООП … Википедия
Книги
- Реактивное программирование с использованием RxJava, Нуркевич Т., Кристенсен Б.. В наши дни, когда программы асинхронны, а быстрая реакция – важнейшее свойство, реактивное программирование поможет писать более надежный, лучше масштабируемый и быстрее работающий код.… Подробнее Купить за 1701 руб
- Реактивное программирование с использованием RxJava, Нуркевич Томаш, Кристенсен Бен. В наши дни, когда программы асинхронны, а быстрая реакция – важнейшее свойство, реактивное программирование поможет писать более надежный, лучше масштабируемый и быстрее работающий код.… Подробнее Купить за 1560 руб
- Реактивное программирование с использованием RxJava, Нуркевич Томаш. В наши дни, когда программы асинхронны, а быстрая реакция – важнейшее свойство, реактивное программирование поможет писать более надежный, лучше масштабируемый и быстрее работающий код.… Подробнее Купить за 1238 руб
Другие книги по запросу «Свойство (программирование)» >>
Источник
Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.
При применении свойств
- можно задать значение по умолчанию, которое будет храниться в данном свойстве (или указать, что никакого значения по умолчанию не предполагается);
- можно указать, что это свойство только для чтения.
Как правило, свойство связано с некоторым внутренним полем объекта. Но свойству вообще может не быть сопоставлена ни одна переменная объекта, хотя пользователь данного объекта имеет дело с ним так, как если бы это было настоящее поле.
Свойства повышают гибкость и безопасность программирования, поскольку, являясь частью (открытого) интерфейса, позволяют менять внутреннюю реализацию объекта без изменения его свойств. Свойства значительно облегчают модификацию программы в тех случаях, когда класс изначально был реализован с нарушением инкапсуляции, а в дальнейшем потребовалось изменить способ доступа к полю. При отсутствии в языке механизма свойств потребовалось бы искать и заменять обращения к полям на методы доступа.
Методы свойств
Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор (accessor); метод, задающий новое значение свойства, — мутатор (mutator).[источник не указан 919 дней] В языках программирования, не поддерживающих свойства, например, C++ и Java, пара из акцессора и мутатора является общепринятым суррогатом для их замены.
Принято называть методы свойств именем свойства с приставками get и set: например, для свойства Xyzzy — get_Xyzzy и set_Xyzzy (традиционный стиль Си) либо GetXyzzy и SetXyzzy (стиль CamelCase). В связи с этой схемой наименования за методами свойств закрепились жаргонные названия getter и setter.
Примеры
Свойства в C#
Свойства в C# — поля с логическим блоком, в котором есть ключевые слова get и set.
Пример класса со свойством:
{
private int p_field;
public int Field
{
get
{
return p_field;
}
private set
{
p_field = value;
}
}
}
Свойства в VB.NET
Пример реализации в VB.NET. Если нужно реализовать свойство только для чтения или только для записи, применяются модификаторы ReadOnly и WriteOnly. Свойство может быть параметризованным. Также может быть свойством по умолчанию, для этого необходимо добавить модификатор Default
Dim F As New Foo
F.Data = 5
F.Item(0) = 5
F(0) = 5 ‘Запись в свойство
Console.WriteLine(F(0)) ‘Чтение свойства
End Sub
Public Class Foo
Private m_Data As Integer
Private m_Arr() As Integer = {1, 2, 3, 4, 5}
Public Property Data As Integer
Set(Value As Integer) ‘Сеттер
m_Data = Value
End Set
Get
Return m_Data ‘Геттер
End Get
End Property
Public Default Property Item(Param As Integer) As Integer ‘Параметризованное свойство по умолчанию
Set(Value As Integer)
m_Arr(Param) = Value
End Set
Get
Return m_Arr(Param)
End Get
End Property
End Class
Свойства в Delphi
Для описания свойства в Delphi служит слово property.
Пример класса со свойством:
private
FMyField: Integer;
procedure SetMyField(const Value: Integer);
function GetMyField: Integer;
public
property MyField: Integer read GetMyField write SetMyField;
end;
function TMyClass.GetMyField: Integer;
begin
Result := FMyField;
end;
procedure TMyClass.SetMyField(const Value: Integer);
begin
FMyField := Value;
end;
Свойства в ActionScript
{
private _foo : int;
public function get foo () : int {
return _foo;
}
public function set foo (foo : int) : void {
_foo = foo;
}
}
Свойства в Objective C
{
NSString *var_name;
}
@property(retain) NSString *var_name;
@end
@implementation Company
@synthesize var_name;
@end
Свойства в Ruby
Описания свойства в Ruby ничем не отличается от описания метода. Например, для создания свойства duration у класса Song нужно описать методы duration и duration=(value)
def duration
@duration
end
def duration=(value)
@duration = value
end
end
Однако простое обращение к внутренней переменной объекта может быть заменено на вызов метода attr_accessor :duration
attr_accessor :duration
end
Более интересным будет пример создания свойства duration_in_minutes, которое будет возвращать или устанавливать время длительности в минутах:
def duration_in_minutes
@duration/60.0
end
def duration_in_minutes=(value)
@duration = (value*60).to_i
end
end
При этом изменение свойства duration_in_minutes повлияет на свойство duration. Например
song.duration_in_minutes = 1.2
print song.duration # напечатает 72
Свойства в Python
Набор методов с декораторами определяет способы работы со свойством (чтение, запись, удаление). Если какой-то из методов убрать (за исключением @property), теряется возможность работать со свойством соответствующим образом.
Пример класса со свойством:
def __init__(self):
self.__x = None
@property
def x(self):
return self.__x
@x.setter
def x(self, value):
self.__x = value
@x.deleter
def x(self):
self.__x = None
>>> a.x
>>> a.x = 2
>>> a.x
2
>>> del a.x
>>> a.x
>>>
См. также
- Событие
- Метод
Источник
- 03/10/2017
- Чтение занимает 4 мин
В этой статье
Свойство — это член, предоставляющий гибкий механизм для чтения, записи или вычисления значения частного поля.A property is a member that provides a flexible mechanism to read, write, or compute the value of a private field. Свойства можно использовать, как если бы они были членами общих данных, но фактически они представляют собой специальные методы, называемые методами доступа.Properties can be used as if they are public data members, but they are actually special methods called accessors. Это позволяет легко получать доступ к данным и помогает повысить безопасность и гибкость методов.This enables data to be accessed easily and still helps promote the safety and flexibility of methods.
Общие сведения о свойствахProperties overview
Свойства позволяют классу предоставлять общий способ получения и задания значений, скрывая при этом код реализации или проверки.Properties enable a class to expose a public way of getting and setting values, while hiding implementation or verification code.
Метод доступа get используется для возврата значения свойства, а метод доступа set — для присвоения нового значения.A get property accessor is used to return the property value, and a set property accessor is used to assign a new value. Эти методы доступа могут иметь различные уровни доступа.These accessors can have different access levels. Дополнительные сведения см. в разделе Доступность методов доступа.For more information, see Restricting Accessor Accessibility.
Ключевое слово value используется для определения значения, присваиваемого методом доступа set.The value keyword is used to define the value being assigned by the set accessor.
Свойства могут быть доступны для чтения и записи (они имеют оба метода доступа — get и set), только для чтения (они имеют метод доступа get, но не имеют метода доступа set) или только для записи (они имеют метод доступа set, но не имеют метода доступа get).Properties can be read-write (they have both a get and a set accessor), read-only (they have a get accessor but no set accessor), or write-only (they have a set accessor, but no get accessor). Свойства только для записи встречаются редко и чаще всего используются для ограничения доступа к конфиденциальным данным.Write-only properties are rare and are most commonly used to restrict access to sensitive data.
Простые свойства, не требующие пользовательского кода метода доступа, можно реализовать как определения текста выражений или как автоматически реализуемые свойства.Simple properties that require no custom accessor code can be implemented either as expression body definitions or as auto-implemented properties.
Свойства с резервными полямиProperties with backing fields
Одной из базовых схем реализации свойств является использование закрытого резервного поля для установки и извлечения значения свойства.One basic pattern for implementing a property involves using a private backing field for setting and retrieving the property value. Метод доступа get возвращает значение закрытого поля, а метод доступа set может выполнять определенные проверки данных до присвоения значению закрытого поля.The get accessor returns the value of the private field, and the set accessor may perform some data validation before assigning a value to the private field. Оба метода доступа также могут выполнять некоторые преобразования или вычисления данных до их сохранения или возвращения.Both accessors may also perform some conversion or computation on the data before it is stored or returned.
Это показано в следующем примере.The following example illustrates this pattern. В этом примере класс TimePeriod представляет интервал времени.In this example, the TimePeriod class represents an interval of time. На внутреннем уровне класс сохраняет интервал времени в секундах в закрытом поле с именем _seconds.Internally, the class stores the time interval in seconds in a private field named _seconds. Свойство чтения и записи с именем Hours позволяет клиенту указывать временной интервал в часах.A read-write property named Hours allows the customer to specify the time interval in hours. Методы доступа get и set выполняют необходимое преобразование между часами и секундами.Both the get and the set accessors perform the necessary conversion between hours and seconds. Кроме того, метод доступа set проверяет данные и создает ArgumentOutOfRangeException, если указано недопустимое количество часов.In addition, the set accessor validates the data and throws an ArgumentOutOfRangeException if the number of hours is invalid.
using System;
class TimePeriod
{
private double _seconds;
public double Hours
{
get { return _seconds / 3600; }
set {
if (value < 0 || value > 24)
throw new ArgumentOutOfRangeException(
$”{nameof(value)} must be between 0 and 24.”);
_seconds = value * 3600;
}
}
}
class Program
{
static void Main()
{
TimePeriod t = new TimePeriod();
// The property assignment causes the ‘set’ accessor to be called.
t.Hours = 24;
// Retrieving the property causes the ‘get’ accessor to be called.
Console.WriteLine($”Time in hours: {t.Hours}”);
}
}
// The example displays the following output:
// Time in hours: 24
Определения текста выраженийExpression body definitions
Как правило, методы доступа к свойствам состоят из однострочных операторов, которые просто назначают или возвращают результат выражения.Property accessors often consist of single-line statements that just assign or return the result of an expression. Эти свойства можно реализовать как члены, воплощающие выражение.You can implement these properties as expression-bodied members. Определения текста выражений состоят из символа =>, за которым идет выражение, назначаемое свойству или извлекаемое из него.Expression body definitions consist of the => symbol followed by the expression to assign to or retrieve from the property.
Начиная с версии C# 6 свойства только для чтения могут реализовывать метод доступа get как член, воплощающий выражение.Starting with C# 6, read-only properties can implement the get accessor as an expression-bodied member. В этом случае не используется ни ключевое слово метода доступа get, ни ключевое слово return.In this case, neither the get accessor keyword nor the return keyword is used. В следующем примере показана реализация свойства только для чтения Name в виде члена, воплощающего выражение.The following example implements the read-only Name property as an expression-bodied member.
using System;
public class Person
{
private string _firstName;
private string _lastName;
public Person(string first, string last)
{
_firstName = first;
_lastName = last;
}
public string Name => $”{_firstName} {_lastName}”;
}
public class Example
{
public static void Main()
{
var person = new Person(“Magnus”, “Hedlund”);
Console.WriteLine(person.Name);
}
}
// The example displays the following output:
// Magnus Hedlund
Начиная с C# 7.0 методы доступа get и set можно реализовывать в виде членов, воплощающих выражения.Starting with C# 7.0, both the get and the set accessor can be implemented as expression-bodied members. В этом случае необходимо указывать ключевые слова get и set.In this case, the get and set keywords must be present. В следующем примере показано использование определений текста выражений для обоих методов доступа.The following example illustrates the use of expression body definitions for both accessors. Обратите внимание, что ключевое слово return не используется с методом доступа get.Note that the return keyword is not used with the get accessor.
using System;
public class SaleItem
{
string _name;
decimal _cost;
public SaleItem(string name, decimal cost)
{
_name = name;
_cost = cost;
}
public string Name
{
get => _name;
set => _name = value;
}
public decimal Price
{
get => _cost;
set => _cost = value;
}
}
class Program
{
static void Main(string[] args)
{
var item = new SaleItem(“Shoes”, 19.95m);
Console.WriteLine($”{item.Name}: sells for {item.Price:C2}”);
}
}
// The example displays output like the following:
// Shoes: sells for $19.95
Автоматически реализуемые свойстваAuto-implemented properties
В некоторых случаях свойство get и методы доступа set просто присваивают значение резервному полю или извлекают значение из него без включения дополнительной логики.In some cases, property get and set accessors just assign a value to or retrieve a value from a backing field without including any additional logic. С помощью автоматически реализуемых свойств можно упростить код, в то время как компилятор C# будет прозрачно предоставлять вам резервное поле.By using auto-implemented properties, you can simplify your code while having the C# compiler transparently provide the backing field for you.
Если у свойства есть методы доступа get и set, они оба должны быть автоматически реализованы.If a property has both a get and a set accessor, both must be auto-implemented. Автоматически реализуемое свойство определяется с помощью ключевых слов get и set без указания какой-либо реализации.You define an auto-implemented property by using the get and set keywords without providing any implementation. Следующий пример аналогичен предыдущему, за исключением того, что Name и Price являются автоматически реализуемыми свойствами.The following example repeats the previous one, except that Name and Price are auto-implemented properties. Обратите внимание на то, что в этом примере также удаляется параметризованный конструктор, что позволяет инициализировать объекты SaleItem, вызывая конструктор без параметров и инициализатор объекта.Note that the example also removes the parameterized constructor, so that SaleItem objects are now initialized with a call to the parameterless constructor and an object initializer.
using System;
public class SaleItem
{
public string Name
{ get; set; }
public decimal Price
{ get; set; }
}
class Program
{
static void Main(string[] args)
{
var item = new SaleItem{ Name = “Shoes”, Price = 19.95m };
Console.WriteLine($”{item.Name}: sells for {item.Price:C2}”);
}
}
// The example displays output like the following:
// Shoes: sells for $19.95
Использование свойствUsing Properties
Свойства интерфейсаInterface Properties
Сравнение свойств и индексаторовComparison Between Properties and Indexers
Ограничение доступности методов доступаRestricting Accessor Accessibility
Автоматически реализуемые свойстваAuto-Implemented Properties
Спецификация языка C#C# Language Specification
Дополнительные сведения см. в разделе Свойства в Спецификации языка C#.For more information, see Properties in the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.
См. такжеSee also
- Руководство по программированию на C#C# Programming Guide
- Использование свойствUsing Properties
- ИндексаторыIndexers
- Ключевое слово getget keyword
- Ключевое слово setset keyword
Источник