Вернемся к старой задаче - выводе данных о людях. У нас есть разные люди с данными в виде отдельных фамилии, имени, отчества, которые надо вывести на экран - вида Пушкин Александр Сергеевич и Пушкин А.С. Чтобы задача была правдоподобней можно имитировать ввод данных пользователем или загрузку из внешнего источника, но все это будет пустой тратой времени - реальные приложения все равно работают с графическим и/или веб-интерфейсом. Просто держим в уме что в реальности людей не два, а две тысячи и заранее их имена не известны.
Получаем уродливый код
string name = "Александр";
string otchestvo = "Сергеевич";
string surname = "Пушкин";
string name2 = "Наталья";
string otchestvo2 = "Николаевна";
string surname2 = "Гончарова";
System.Console.WriteLine(surname + " " + name + " " + otchestvo);
System.Console.WriteLine(surname2 + " " + name2 + " " + otchestvo2);
System.Console.ReadLine();
Два раза повторяется один и тот же кусок кода - склеивание трех строк в одну.
Два раза повторяется другой кусок кода - склеивание фамилии, первых букв имени и отчества, точек.
|
|
Логичнее всего вынести повторяющиеся куски кода в отдельное место, дать им имя и во всех остальных местах программы вызывать их по этому имени. Иными словами сделать функции - куски кода с собственными именем, которые принимают на вход какие-то данные, что-то с ними делают и возвращают обратно какие-то данные (хотя возможен вариант когда они ничего не принимают и не возвращают, просто что-то делают).
Пример функции
public static string CreateFio(string surname, string name, string otchestvo)
{
string fio = surname + " " + name + " " + otchestvo;
return fio;
}
Слова public static отложим на пару минут в сторону, string означает, что функция вернет назад строку, CreateFio(string surname, string name, string otchestvo) - название функции и описание того, что она принимает на вход три строки.
Если бы функция ничего не принимала и ничего не возвращала, ее описание выглядело бы так
public static void CreateFio()
{
// фио мы здесь явно создать не сможем, вечная морока с этим тестовыми примерами
}
Код функции обрамляется фигурными скобками, значение возвращается с помощью ключевого слова return
Весь код тестовой программы с функциями
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestConsoleApplication
{
class Program
{
public static string CreateFio(string surname, string name, string otchestvo)
{
string fio = surname + " " + name + " " + otchestvo;
return fio;
}
public static string CreateFioInitials(string surname, string name, string otchestvo)
{
string fio = surname + " " + name.Substring(0, 1) + ". " + otchestvo.Substring(0, 1) + ".";
//Временно оставим в стороне код "Substring(0, 1)" - он просто вырезает первый символ из строки.
return fio;
}
static void Main(string[] args)
{
string name = "Александр";
string otchestvo = "Сергеевич";
string surname = "Пушкин";
string name2 = "Наталья";
string otchestvo2 = "Николаевна";
string surname2 = "Гончарова";
System.Console.WriteLine(CreateFio(surname, name, otchestvo));
System.Console.WriteLine(CreateFioInitials(surname, name, otchestvo));
System.Console.WriteLine(CreateFio(surname2, name2, otchestvo2));
System.Console.WriteLine(CreateFioInitials(surname2, name2, otchestvo2));
System.Console.ReadLine();
}
}
}