Параметры методов
При вызове метода выполняются следующие действия:
- Вычисляются выражения, стоящие на месте аргументов.
- Выделяется память под параметры метода в соответствии с их типом.
- Каждому из параметров сопоставляется соответствующий аргумент (аргументы как бы накладываются на параметры и замещают их).
- Выполняется тело метода.
- Если метод возвращает значение, оно передается в точку вызова; если метод имеет тип void, управление передается на оператор, следующий после вызова.
При этом проверяется соответствие типов аргументов и параметров и при необходимости выполняется их преобразование. При несоответствии типов выдается диагностическое сообщение. Листинг 5.3 иллюстрирует этот процесс.
В листинге 5.2 в класс Demo добавлены методы установки и получения значения поля y.
using System;
namespace ConsoleApplication1
{
class Demo
{
public int a = 1;
public const double c = 1.66;
static string s = "Demo";
double y;
public double Gety() // метод получения поля y
{
return y;
}
public void Sety( double y_ ) // метод установки поля y
{
y = y_;
}
public static string Gets() // метод получения поля s
{
return s;
}
}
class Class1
{ static void Main()
{
Demo x = new Demo();
x.Sety(0.12); // вызов метода установки поля y
Console.WriteLine(x.Gety()); // вызов метода получения поля y
Console.WriteLine(Demo.Gets()); // вызов метода получения поля s
}
}
}
Листинг 5.2. Простейшие методы (html, txt)
23using System;namespace ConsoleApplication1{ class Class1 { static int Max(int a, int b) // метод выбора максимального значения { if ( a > b ) return a; else return b; } static void Main() { int a = 2, b = 4; int x = Max( a, b ); // вызов метода Max Console.WriteLine( x ); // результат: 4 short t1 = 3, t2 = 4; int y = Max( t1, t2 ); // вызов метода Max Console.WriteLine( y ); // результат: 4 int z = Max( a + t1, t1 / 2 * b ); // вызов метода Max Console.WriteLine( z ); // результат: 5 } }}Листинг 5.3. Передача параметров методу (html, txt)