TOC

This article is currently in the process of being translated into French (~84% done).

Classes:

Methods (functions)

While properties and fields can be considered passive parts of a class, methods are active. They will perform one or several actions and optionally return a result. In other programming languages they are sometimes referred to as functions or even "funcs", but in C#, where they belong to a class, they are called methods. Methods are very useful because they allow you to encapsulate a piece of functionality in a method which you can then call again from several places.

Une méthode se définit comme suit :

<visibility> <return type> <name>(<parameters>)
{
    <method code>
}

Voici un exemple simple :

public int AddNumbers(int number1, int number2)
{
	return number1 + number2;
}

Cette méthode très simple va additionner deux nombres et retourner le résultat. Décrivons les éléments qui la composent :

  • public est la visibilité (notion développée plus loin dans ce tutoriel)
  • int est le type de la valeur retournée. Si vous ne souhaitez rien retourner, utilisez le mot-clé void à la place.
  • AddNumbers est le nom de la méthode.
  • (int number1, int number2) - ce sont les paramètres (détails plus loin). Les paramètres sont optionnels, vous pouvez donc laisser les parenthèses vides. Les parenthèses sont cependant obligatoires.
  • Dans la méthode (entre les accolades) se trouve le code de cette méthode composé de plus ou moins d'instructions.

Pour appeler une méthode, écrivez simplement son nom suivi des parenthèses. Entre les parenthèses, indiquez les paramètres (s'il sont requis pour cette méthode) de la manière suivante :

AddNumbers(3, 39);

Les méthodes étant définies dans des classes, il est possible d'appeler une méthode depuis une autre classe que celle courante. Pour cela, faites précéder l'appel de la méthode par le nom de l'objet, ou bien par le nom de la classe dans le cas d'une méthode statique (détails plus loin). Voici un exemple d'appel de la méthode AddNumbers(), alors qu'elle se trouve dans une autre classe nommée MathHelper :

public void DoMath()
{
	MathHelper mathHelper = new MathHelper();
	int result = mathHelper.AddNumbers(4, 38);
	Console.WriteLine(result);
}	

Types retournés par les méthodes

Revenons en détail sur les types de valeurs retournées. Dans l'exemple qui suit, nous avons défini une méthode retournant une valeur de type entier (integer), mais vous pouvez retourner une valeur de tout autre type existant en C#. En fait, vous pouvez même déclarer une méthode qui ne retourne rien, comme nous l'avons vu précédemment avec la méthode DoMath(). Notez que nous avons remplacé int par le mot-clé void, indiquant ainsi que cette méthode n'est pas sensée retourner de valeur. Dans certains langages de programmation, les fonctions ne retournant rien sont appelées procédures, mais en C# elles restent des méthodes.

Notez que si on déclare un type retourné pour une méthode, il FAUT retourner une valeur, sinon le compilateur protestera immédiatement.

public int AddNumbers(int number1, int number2)
{
	Console.WriteLine(number1 + number2);
}
Compiler error: AddNumbers(int, int)': not all code paths return a value

Cela implique que votre méthode contienne un ou plusieurs mots-clés "return" si un type retourné a été déclaré. Dans certaines situations, il en faudra plusieurs, afin de prendre en compte différentes possibilités, comme dans cet exemple :

public int AddLargeNumbers(int number1, int number2)
{			
	if((number1 > 1000) && (number2 > 1000))
	{
		return number1 + number2;
	}
	return 0;
}

Dans le cas présent, nous avons également besoin d'une seconde instruction "return". Si elle est omise, le compilateur protestera car notre instruction conditionnelle empêchera d'atteindre la première instruction "return".

Summary

Les méthodes permettent d'encapsuler et de réutiliser des fonctionnalités depuis plusieurs emplacements. En fournissant différents paramètres à une méthode, on peut obtenir différents résultats. Nous avons utilisé quelques paramètres dans les exemples précédents, mais dans le prochain article, nous approfondirons bien plus le sujet des paramètres de méthodes.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!