A property is a member that provides access to an attribute of an object or
a class. Examples of properties include
the length of a string, the size of a font, the caption of a window, the
name of a customer, and so on. Properties
are a natural extension of fields?both are named members with associated
types, and the syntax for accessing
fields and properties is the same. However, unlike fields, properties do
not denote storage locations. Instead,
properties have accessors that specify the statements to be executed when
their values are read or written.
Properties thus provide a mechanism for associating actions with the
reading and writing of an object?s attributes;
furthermore, they permit such attributes to be computed.
Properties are declared using property-declarations:
property-declaration:
attributesopt property-modifiersopt type member-name {
accessor-declarations }
property-modifiers:
property-modifier
property-modifiers property-modifier
C# LANGUAGE SPECIFICATION
240
property-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern
member-name:
identifier
interface-type . identifier
A property-declaration may include a set of attributes (§24) and a valid
combination of the four access modifiers
(§17.2.3), the new (§17.2.2), static (§17.6.1), virtual (§17.5.3, §17.6.
3), override (§17.5.4, §17.6.3),
sealed (§17.5.5), abstract (§17.5.6, §17.6.3), and extern modifiers.
Property declarations are subject to the same rules as method declarations (
§17.5) with regard to valid
combinations of modifiers.
The type of a property declaration specifies the type of the property
introduced by the declaration, and the
member-name specifies the name of the property. Unless the property is an
explicit interface member
implementation, the member-name is simply an identifier. For an explicit
interface member implementation
(§20.4.1), the member-name consists of an interface-type followed by a ?.?
and an identifier.
The type of a property must be at least as accessible as the property
itself (§10.5.4).
The accessor-declarations, which must be enclosed in ?{? and ?}? tokens,
declare the accessors (§17.6.2) of the
property. The accessors specify the executable statements associated with
reading and writing the property.
Even though the syntax for accessing a property is the same as that for a
field, a property is not classified as a
variable. Thus, it is not possible to pass a property as a ref or out
argument.
When a property declaration includes an extern modifier, the property is
said to be an external property.
Because an external property declaration provides no actual implementation,
each of its accessor-declarations
consists of a semicolon.