A method is a member that implements a computation or action that can be
performed by an object or class.
Methods are declared using method-declarations:
method-declaration:
method-header method-body
method-header:
attributesopt method-modifiersopt return-type member-name (
formal-parameter-listopt )
method-modifiers:
method-modifier
method-modifiers method-modifier
method-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern
return-type:
type
void
member-name:
identifier
interface-type . identifier
method-body:
block
;
A method-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.5.2), virtual (§17.5.3),
override (§17.5.4), sealed (§17.5.5),
abstract (§17.5.6), and extern (§17.5.7) modifiers.
A declaration has a valid combination of modifiers if all of the following
are true:
? The declaration includes a valid combination of access modifiers (§17.2.3)
.
? The declaration does not include the same modifier multiple times.
? The declaration includes at most one of the following modifiers: static,
virtual, and override.
? The declaration includes at most one of the following modifiers: new and
override.
? If the declaration includes the abstract modifier, then the declaration
does not include any of the following
modifiers: static, virtual, sealed, or extern.
? If the declaration includes the private modifier, then the declaration
does not include any of the following
modifiers: virtual, override, or abstract.
C# LANGUAGE SPECIFICATION
228
? If the declaration includes the sealed modifier, then the declaration
also includes the override modifier.
The return-type of a method declaration specifies the type of the value
computed and returned by the method.
The return-type is void if the method does not return a value.
The member-name specifies the name of the method. Unless the method is an
explicit interface member
implementation (§20.4.1), the member-name is simply an identifier. For an
explicit interface member
implementation, the member-name consists of an interface-type followed by a
?.? and an identifier.
The optional formal-parameter-list specifies the parameters of the method (§
17.5.1).
The return-type and each of the types referenced in the
formal-parameter-list of a method must be at least as
accessible as the method itself (§10.5.4).
For abstract and extern methods, the method-body consists simply of a
semicolon. For all other methods, the
method-body consists of a block, which specifies the statements to execute
when the method is invoked.
The name and the formal parameter list of a method define the signature (§10
.6) of the method. Specifically, the
signature of a method consists of its name and the number, modifiers, and
types of its formal parameters. The
return type is not part of a method?s signature, nor are the names of the
formal parameters.
The name of a method must differ from the names of all other non-methods
declared in the same class. In
addition, the signature of a method must differ from the signatures of all
other methods declared in the same
class, and two methods declared in the same class may not have signatures
that differ solely by ref and out.