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-headermethod-bodymethod-header : attributes method-modifiers return-typemember-name(formal-parameter-list)method-modifiers : method-modifiermethod-modifiersmethod-modifiermethod-modifier : newpublicprotectedinternalprivatestaticvirtualsealedoverrideabstractexternreturn-type : typevoidmember-name : identifierinterface-type.identifiermethod-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, or extern. If the declaration includes the private modifier, then the declaration does not include any of the following modifiers: virtual, override, or abstract. 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.