Методы - подпрограммы, которые манипулируют данными, определенными в классе или в самой подпрограмме. - Метод без параметров using System; class HelloWorld { static void Main() { printHello(); } static void printHello () { Console.WriteLine("Hello"); } } - Передача параметров. Метод-обертка для упрощения интерфейса или укорочения инструкции using System; class HelloWorld { static void Main() { print ("Hi there!"); } static void print (String s) { Console.WriteLine(s); } } - Распечатать n раз текст using System; class HelloWorld { static void Main() { printNTimes ("Hi there!", 4); } static void printNTimes (String s, int n) { for (int i =0 ; i < n; i++) { Console.Write(s); } } } - Возврат значения из функции. Возврат продублированного несколько раз текста // Оператор return using System; class HelloWorld { static void Main() { print ( stringNTimes( "Hi there!", 4)); } static String stringNTimes (String s, int n) { String output = ""; for (int i =0 ; i < n; i++) { output += s; } return output; } static void print (String s) { Console.WriteLine(s); } } - Функция нахождения максимального из двух using System; class HelloWorld { static void Main() { print(""+max (1, 5)); } static int max (int a, int b) { if (a > b) { return a; } else { return b; } } static void print (String s) { Console.WriteLine(s); } } -Найти максимум из трех. using System; class HelloWorld { static void Main() { print(""+ max (max (1, 5), 6) ); } static int max (int a, int b) { if (a > b) { return a; } else { return b; } } static void print (String s) { Console.WriteLine(s); } } -Найти максимум из трех. Использование одного метода в другом // Здесь есть перегрузка функций max (версия с двумя праметрами и с тремя) // Перегруженные методы - это методы с одним именем, но с разным набором параметров. // Вызывается тот метод, который подходит под имеющиеся параметры using System; class HelloWorld { static void Main() { print(""+ max (7,12, 6) ); } static int max (int a, int b) { if (a > b) { return a; } else { return b; } } static int max (int a, int b, int c) { return max (max (a, b), c); } static void print (String s) { Console.WriteLine(s); } } - Перегрузка методов И в языке C# мы можем создавать в классе несколько методов с одним и тем же именем, но разной сигнатурой. Что такое сигнатура? Сигнатура складывается из следующих аспектов: Имя метода, Количество параметров, Типы параметров, Порядок параметров, Модификаторы параметров Но названия параметров в сигнатуру НЕ входят. Например, возьмем следующий метод: public int Sum(int x, int y) { return x + y; } У данного метода сигнатура будет выглядеть так: Sum(int, int) И перегрузка метода как раз заключается в том, что методы имеют разную сигнатуру, в которой совпадает только название метода. То есть методы должны отличаться по: Количеству параметров, Типу параметров, Порядку параметров, Модификаторам параметров - Локальные переменные и параметры // значение примитивных типов передаются по значению using System; class HelloWorld { static void Main() { int a = 10; increment (a); print (""+a); // распечатает 10 } static void increment (int a) { // это локальная копия значения, при вызове этой функции a ++; } static void print (String s) { Console.WriteLine(s); } } // Измененное значение в массиве будет доступно из места вызова. Сами значения в массиве изменяются // Объекты передаются по ссылке using System; class HelloWorld { static void Main() { int[] a = {1,2,3,4,5}; increment (a); print (""+a[0]); } static void increment (int a) { a ++; } static void increment (int[] array) { array[0] ++; } static void print (String s) { Console.WriteLine(s); } } - Модификатор параметра ref // Этот метод изменяет свой аргумент using System; class HelloWorld { static void Main() { int a = 5; increment (ref a); print (""+a); // Выводит 6 } static void increment (ref int a) { a ++; } static void print (String s) { Console.WriteLine(s); } } - swap Обмен значениями двух переменных using System; class HelloWorld { static void Main() { int a = 5, b = 10; swap (ref a, ref b); print (a+" "+b); } static void swap (ref int a, ref int b) { int c = a; a = b; b = c; } static void print (String s) { Console.WriteLine(s); } } - Модификатор out - используется для возврата значения из метода using System; class HelloWorld { static void Main() { int a = 5, b = 10; int sum, multiplication; calculate (a, b, out sum, out multiplication); print (sum+" "+multiplication); } static void calculate ( int a, int b, out int sum, out int multiplication) { sum = a + b; multiplication = a * b; } static void print (String s) { Console.WriteLine(s); } } - "Глобальные переменные" - поля класса using System; class HelloWorld { static bool _debug = true; // будет видна во всех методах класса static void Main() { _debug = true; debug("Распечатается, если отладка включена"); _debug = false; debug("Распечатается, если отладка включена"); } static void debug(String text) { if (_debug) { Console.WriteLine(text); } } } - Передача произвольного количества параметров using System; class HelloWorld { static void Main() { Console.WriteLine( min (1,-5)); Console.WriteLine( min (1,2,3,-5, 6)); int [] array = {1,4,5,2} ; Console.WriteLine( min ( array )); } static int min (params int[] args) { int min = args[0]; for (int i = 1; i < args.Length; i++) { if (args[i] < min ) { min = args[i]; } } return min; } } Параметры по умолчанию using System; class HelloWorld { static void Main() { Console.WriteLine( sum (1, 2) ); Console.WriteLine( sum (10) ); Console.WriteLine( sum () ); } static int sum (int a =10, int b = 20) { return a+b; } } - Именованные параметры using System; class HelloWorld { static void Main() { Console.WriteLine( remainder() ); Console.WriteLine( remainder(10, 6) ); Console.WriteLine( remainder(apples:10, kids:5) ); Console.WriteLine( remainder(kids:6, apples:10) ); } static int remainder (int apples =10, int kids = 6) { return apples % kids; } } НОД static int gcd (int a, int b) { if (b > a) { int c = a; a = b; b = c; } int k; while (b!=0) { k = a%b; a = b; b = k; } return a; } Проверка на простоту using System; class HelloWorld { static void Main() { int n = Convert.ToInt32( Console.ReadLine()); Console.WriteLine (isPrime(n)?"prime":"composite"); } static bool isPrime (int n) { for (int divider = 2; divider <= Math.Sqrt(n); divider++) { if (n % divider == 0) { return false; } } return true; } }