В C # функция – это способ упаковки кода, который что-то делает, а затем возвращает значение. В отличие от C, C ++ и некоторых других языков, функции не существуют сами по себе. Они являются частью объектно-ориентированного подхода к программированию.
Программа для управления электронными таблицами может включать функцию sum () как часть объекта, например .
В C # функцию можно назвать функцией-членом – она является членом класса, – но эта терминология осталась от C ++. Обычно это называется методом.
Метод экземпляра
Существует два типа методов: метод экземпляра и статический метод. В этом введении рассматривается метод экземпляра.
В приведенном ниже примере определяется простой класс и называется его Test . Этот пример представляет собой простую консольную программу, поэтому это разрешено. Обычно первый класс, определенный в файле C #, должен быть классом формы.
Возможно иметь пустой класс, подобный этому class Test {} , но это бесполезно. Хотя он выглядит пустым, он, как и все классы C #, наследуется от объекта, который его содержит, и включает конструктор по умолчанию в основной программе.
var t = new Test ();
data-type = “code”>
Этот код работает, но не работает при запуске все, что угодно, кроме создания экземпляра t пустого тестового класса. Приведенный ниже код добавляет функцию, метод, который выводит слово «Hello».
using System;
namespace funcex1
{
class Test
{
public void SayHello ()
{
Console.WriteLine ("Hello");
}
}
Программа класса
{
static void Main (string [] args)
{
var t = новый тест ();
t.SayHello ();
Console.ReadKey ();
}
}
}
data-type = “code”>
Этот пример кода включает Console.ReadKey () , поэтому при его запуске , он отображает окно консоли и ожидает ключевого ввода, такого как Enter, Пробел или Return (не клавиши Shift, Alt или Ctrl). Без него он открывал бы окно консоли, выводил бы “Hello”, а затем закрывал бы все в мгновение ока.
Функция SayHello – это настолько простая функция, насколько это возможно. Это общедоступная функция, что означает, что функция видна извне класса.
Если вы удалите слово public и попробуйте скомпилировать код, он завершится ошибкой компиляции “funcex1.test.SayHello () ‘недоступен из-за его уровня защиты”. Если вы добавите слово “private” вместо слова public и перекомпилируете, вы получите ту же ошибку компиляции. Просто измените его обратно на “public”.
Слово void в функции означает, что функция не возвращает никаких значения.
Типичные характеристики определения функций
- Уровень доступа: общедоступный, частный и некоторые другие
- Возвращаемое значение>: void или любой тип, например int
- Имя метода: SayHello
- Любые параметры метода: пока нет. Они определены в скобках () после имени метода
Код для определения другой функции MyAge ():
public int MyAge ()
{
return 53;
}
data-type = “code”>
Добавьте это сразу после метода SayHello () в первом примере и добавьте эти две строки перед
var age = t.MyAge ( );
Console.WriteLine ("Дэвиду {0} лет", возраст);
data-type = “code”>
Запуск программы теперь выводит следующее:
Hello
data-type = “code” >
Дэвиду 53 года,
data-type = “code”>
var age = t.MyAge (); вызов метода вернул значение 53. Это не самая полезная функция. Более полезный пример – функция таблицы Sum с массивом целых чисел, начальным индексом и количеством суммируемых значений.
Это функция:
public float Sum (int [] values, int startindex, int endindex)
{
var total = 0;
for (var index = startindex; index {
total + = values [index];
}
return total;
}
data-type = “code”>
Вот три варианта использования. Это код, который нужно добавить в Main () и вызвать для проверки функции Sum.
var values = new int [10] { 1, 2, 3, 4, 5, 6, 7, 8, 9,10};
Console.WriteLine (t.Sum (values, 0,2)); //Должно быть 6
Console.WriteLine (t.Sum (values, 0,9)); //должно быть 55
Console.WriteLine (t.Sum (values, 9,9)); //должно быть 10, поскольку 9-е значение равно 10
data-type = “code”>
Цикл For суммирует значения в диапазоне startindex в endindex, поэтому для startindex = 0 и endindex = 2 это сумма 1 + 2 + 3 = 6. В то время как для 9,9 он просто добавляет единичные значения [9] = 10.
Внутри функции общая локальная переменная инициализируется значением 0, а затем добавляются соответствующие части значений массива.