10.5 Methods
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 (Section 17) and a valid combination of the four access modifiers (Section 10.2.3), the new (Section 10.2.2), static (Section 10.5.2), virtual (Section 10.5.3), override (Section 10.5.4), sealed (Section 10.5.5), abstract (Section 10.5.6), and extern (Section 10.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 (Section 10.2.3).
- The declaration does not include the same modifier multiple times.
- The declaration includes at most one of the following modifiers:
static,virtual, andoverride. - The declaration includes at most one of the following modifiers:
newandoverride. - If the declaration includes the
abstractmodifier, then the declaration does not include any of the following modifiers:static,virtual,sealed, orextern. - If the declaration includes the
privatemodifier, then the declaration does not include any of the following modifiers:virtual,override, orabstract. - If the declaration includes the
sealedmodifier, then the declaration also includes theoverridemodifier.
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 (Section 13.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 (Section 10.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 (Section 3.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 (Section 3.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.