ECMA-334 C# Language Specification

17.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-modifier
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 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.

In This Section: