Методы класса в C#

Общие сведения о методах C#

Метод – это набор инструкций, объединенных в блок кода. Методы в C# могут объявляться только в классе или в структуре.

Методы в C# характеризуются своими сигнатурами. Сигнатура метода – совокупность модификаторов доступа метода, других модификаторов метода, типа возвращаемого значения метода, имени метода и всех параметров метода.

Параметры метода должны указываться в скобках, и разделяться запятыми. Если у метода нет параметров, скобки остаются пустыми.

Методы в C# состоят из сигнатуры и тела метода – набора инструкций метода. В общем случае метод в C# может быть записан следующим образом:

модификатор_доступа модификатор_метода тип_возвращаемого_значения имя_метода ( тип_параметра_1 параметр_метода_1, тип_параметра_1 параметр_метода_2, ... ) 
{ /* инструкции_метода */ }

В следующем примере класс ConsoleEx содержит 3 метода – WriteEmptyLine(), WriteRedLine( string line ), WriteGreenLine( string line ):

public class ConsoleEx {
    public void WriteEmptyLine() {
        Console.WriteLine();
    }

    public void WriteRedLine( string line ) {
        ConsoleColor color = Console.ForegroundColor;
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine( line );
        Console.ForegroundColor = color;
    }

    public void WriteGreenLine( string line ) {
        ConsoleColor color = Console.ForegroundColor;
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine( line );
        Console.ForegroundColor = color;
    }
}

Сигнатуры этих методов:

public void WriteEmptyLine();
public void WriteRedLine( string line );
public void WriteGreenLine( string line );

Параметры метода

Сигнатура метода содержит полный набор параметров метода – это значения, которые должны передаваться методу вызывающим кодом. Метод может содержать ноль или более параметров. Если метод содержит больше одного параметра, то параметры должны разделяться запятыми. Следующий метод содержит 2 параметра:

public void WriteLine( string line, ConsoleColor lineColor ) {
    ConsoleColor color = Console.ForegroundColor;
    Console.ForegroundColor = lineColor;
    Console.WriteLine( line );
    Console.ForegroundColor = color;
}

Вызов метода и аргументы метода

Для вызова метода после имени объекта класса ставится точка и указывается имя метода. Вызывающий код должен передать методу необходимое число аргументов, совпадающих по количеству и типу с параметрами метода. В следующем коде вызывается метод с двумя аргументами:

public class Program {
    static void Main( string[] args ) {
        ConsoleEx console = new ConsoleEx();

        // вызов метода ConsoleEx.WriteLine
        console.WriteLine( 
            "Вызов метода с агрументами", // первый аргумент
            ConsoleColor.Yellow           // второй аргумент
        );

        Console.ReadKey();
    }        
}

Если у метода отсутствуют параметры, при вызове метода должны указываться пустые скобки после имени метода:

Сonsole.WriteLine(); //вызов метода без параметров

Именованные аргументы метода

При вызове метода необходимо соблюдать порядок следования аргументов. Однако в C# может применяться передача методу именованных аргументов. Именованные аргументы – это аргументы метода с указанием названия параметров метода, которым они соответствуют. В следующем примере вызывается метод с двумя именованными аргументами:

public class Program {
    static void Main( string[] args ) {
        ConsoleEx console = new ConsoleEx();

        // вызов метода ConsoleEx.WriteLine с именованными аргументами
        console.WriteLine( 
            lineColor: ConsoleColor.Yellow,
            line: "Вызов метода с агрументами"
        );

        Console.ReadKey();
    }        
}

Обратите внимание, что в этом фрагменте кода аргументы указаны в порядке, отличном от того в котором следуют параметры метода.

Использование позиционных аргументов после именованны в C# не допускается. Следующий код вызывает ошибку, не смотря на то, что аргументы указаны в том порядке, в котором представлены параметры метода:

public class Program {
    static void Main( string[] args ) {
        ConsoleEx console = new ConsoleEx();

        console.WriteLine( 
            line: "Вызов метода с агрументами",
            ConsoleColor.Yellow // ошибка !!!
        );

        Console.ReadKey();
    }        
}

Необязательные аргументы метода

Необязательные аргументы метода могут использоваться если вычисление тела метода возможно без использования этих аргументов. Для определения необязательного параметра в сигнатуре метода после объявления его параметра нужно указать значение этого параметра по умолчанию. В следующем фрагменте кода объявляется метод WriteLine с одним обязательным аргументом line и двумя необязательными аргументами – lineColor и backColor:

public void WriteLine( 
    string line, 
    ConsoleColor lineColor = ConsoleColor.White, 
    ConsoleColor backColor = ConsoleColor.Black ) {

    ConsoleColor foregroundColor = Console.ForegroundColor;
    ConsoleColor backgroundColor = Console.BackgroundColor;
    Console.ForegroundColor = lineColor;
    Console.BackgroundColor = backColor;
    Console.WriteLine( line );
    Console.ForegroundColor = foregroundColor;
    Console.BackgroundColor = backColor;
}

Необязательные параметры должны следовать после всех обязательных параметров метода.


Возврат значения из метода. Ключевое слово return

Методы в C# могут возвращать значения. Если метод возвращает какое-либо значение, то тип этого значения должен быть указан перед именем метода. При этом все ветви кода метода должны либо возвращать совместимое значение явно при помощи оператора return, либо генерировать исключение при помощи оператора throw. Следующий фрагмент кода содержит метод Sum, возвращающий числовое значение:

public int Sum( int i1, int i2 ) {
    return i1 + i2;
}

Мы могли бы не пользоваться в этом методе оператором return, сгенерировав исключение:

public int Sum( int i1, int i2 ) {
    throw new Exception();
}

Инструкция return немедленно завершает выполнение метода. Все операторы, которые находятся после инструкции return пропускаются.


Метод Main()

Особым методом в C# является метод Main(), служащий точкой входа в программу. Выполнение программы на языке C# начинается именно с этого метода. Этот метод может получать и обрабатывать аргументы, переданные программе извне. Метод Main() обязательно должен быть помечен специальным модификатором – static. Подробнее об этом методе можно почитать в статье – структура программы C#.

avatar
5000
  Подписаться  
Уведомление о