0Pricing
C# Academy · Урок

Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка

Определяйте сигнатуры методов и возвращаемые значения, используйте методы с телом-выражением, необязательные и именованные параметры, ref/out и изучайте перегрузку. Примечание: в C# 6 нет локальных функций.

«Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.

Основы методов

Цель: определять понятные методы: сигнатура (имя, параметры, возвращаемый тип), краткое тело и предсказуемое поведение.

  • Возвращаемые значения
  • Методы в форме выражения
  • Необязательные и именованные параметры

Сигнатуры и возвращаемые значения

У метода есть имя, параметры и возвращаемый тип. Имена должны быть понятными и отражать назначение.

using System;

public class MathUtil
{
  // Signature: name Add, parameters (int a, int b), return int
  public static int Add(int a, int b)
  {
    return a + b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int s = MathUtil.Add(2, 3);
    Console.WriteLine("Sum = " + s);
  }
}

Методы в форме выражения

Методы в форме выражения используют => для небольших и понятных helpers.

using System;

public static class FormatUtil
{
  // Expression-bodied method (C# 6): concise one-liner
  public static string Greet(string name) => "Hello, " + name + "!";
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(FormatUtil.Greet("Ada"));
  }
}

Необязательные и именованные параметры

Используйте необязательные параметры для разумных значений по умолчанию, а именованные аргументы — для ясности в месте вызова.

using System;

public static class Logger
{
  // Optional parameter: times has a default
  public static void Log(string message, int times = 1)
  {
    for (int i = 0; i < times; i = i + 1)
    {
      Console.WriteLine(message);
    }
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Logger.Log("One time");                 // uses default
    Logger.Log(message: "Twice", times: 2); // named arguments
  }
}

Основы ref и out

ref: переменная должна получить значение до вызова. out: метод должен присвоить значение до возврата.

using System;

public static class RefOutDemo
{
  public static void Increment(ref int x)
  {
    x = x + 1; // modifies caller's variable
  }

  public static bool TryDivide(int a, int b, out int result)
  {
    if (b == 0)
    {
      result = 0;       // out must be assigned before return
      return false;
    }
    result = a / b;
    return true;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    int n = 10;
    RefOutDemo.Increment(ref n);
    Console.WriteLine("n = " + n); // 11

    int r;
    bool ok = RefOutDemo.TryDivide(9, 0, out r);
    Console.WriteLine("ok=" + ok + " r=" + r);
  }
}

Перегрузка и примечание

Перегрузка позволяет использовать одно имя для связанных операций. Примечание: локальные функции появились в более поздних версиях C#; в C# 6 используйте небольшие закрытые вспомогательные методы (helpers).

using System;

public static class Calc
{
  // Overloads: same name, different parameter lists
  public static int Area(int side) { return side * side; }
  public static int Area(int width, int height) { return width * height; }

  // C# 6 has no local functions; use private helpers instead.
  private static int DoubleIt(int x) { return x + x; }

  public static int TwiceArea(int side)
  {
    int a = Area(side);
    return DoubleIt(a);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Area square 3 = " + Calc.Area(3));
    Console.WriteLine("Area rect 3x4 = " + Calc.Area(3, 4));
    Console.WriteLine("Twice area of 3 = " + Calc.TwiceArea(3));
  }
}

Правило для ref и out

Проверка: какое утверждение о параметрах ref и out в C# верно?

Итоги

Итоги: проектируйте понятные сигнатуры и возвращаемые значения, используйте небольшие helpers в форме выражения; применяйте необязательные и именованные параметры для повышения читаемости; учитывайте различия между ref и out; осторожно используйте перегрузку. Локальные функции появились в более поздних версиях C# — в C# 6 используйте закрытые вспомогательные методы.

Часто задаваемые вопросы

Урок «Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка» бесплатный?

Да — полный текст урока «Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.

Чему я научусь в уроке «Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка»?

Определяйте сигнатуры методов и возвращаемые значения, используйте методы с телом-выражением, необязательные и именованные параметры, ref/out и изучайте перегрузку. Примечание: в C# 6 нет локальных ф… Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Сигнатуры и возвращаемые значения; методы с телом-выражением; необязательные и именованные параметры; ref/out; перегрузка
  2. Необязательные и именованные параметры; ref/out/in (основы)
  3. Локальные функции (примечание о C# 6) и перегрузка
← Назад к C# Academy