Урок #10 – Создание функций (методов класса)

Урок #10 – Создание функций (методов класса)

Для сокращения кода в программировании используются функции. Они позволяют вынести повторяющийся код в отдельное место. За урок мы научимся работать с функциями в языке C#.

Видеоурок

Функции можно назвать небольшими подпрограммами, куда можно вынести повторяющийся код и обращаться к нему, когда это будет нужно. Функции значительно облегчают построение программ, так как нам не надо копировать однотипный код множество раз, а можно просто воспользоваться одной общей функцией.


Многие путают функции и методы и не понимают отличий между ними. На самом деле отличий нет, так как что методы, что функции являются одним и тем же. Функции что записаны вне классов называют функциями, а функции что записаны внутри классов называются методами. Поскольку C# это объектно ориентированный язык, то лучше говорить методы, хотя это не имеет никакого значения.


Точно такая же ситуация обстоит с переменным. В классах переменные называются полями, а вне классов - переменными.


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


Перед типом данных всегда прописывается модификатор доступа. Сейчас мы их детально рассматривать не будем, так как это тема ООП. В уроке мы будем постоянно устанавливать модификатор public, тем самым будем говорить что функция доступна всем внутри класса.


Зачем static?

Поскольку мы хотим обращаться к функциям напрямую без создания объекта, то мы прописываем ключевое слово static. Оно говорит компилятору что функция принадлежит всему классу, а не конкретным объектам. 


В будущем мы более детально ознакомимся с данным модифактором, но пока будем представлять его как удобное слово для обращения к функциям.


Создание функции

На основе всех данных наша функция будет выглядеть следующим образом:

public static void test () {
	Console.WriteLine("Вывод чего-либо в консоль");
}

Функция выше не принимает никаких параметров и ничего не возвращает. Она просто пишет слово в консоль. Давайте разнообразим функцию и добавим параметр:

public static void test (string word) {
	Console.Write(word);
}

Теперь функция принимает параметр, который будет отображен в консоли.


Если функция должна что-либо вернуть, то прописываем тип данных который будет возвращен. Для возвращения данных используем ключевое слово return:

public static double test (double some_number) {
	some_number *= 2;
	return some_number;
}

Исходный код

Создание функций
using System;

namespace project {

    class Program {

        static void Main() {
            // Print("Hello");
            // string words = "Hello world";
            // Print(words);
            // Print();
            int res1 = Summa(5, 9);
            int a = 4, b = 7;
            int res2 = Summa(a, b);

            Print(res1.ToString());
            Print(res2.ToString());
        }

        public static void Print(string word) {
            Console.WriteLine(word);
        }

        public static int Summa(int x, int y) {
            return x + y;
        }


    }

}
Посмотреть остальной код можно после подписки на проект!

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Также стоит посмотреть

Программа на C# .NET Windows Forms
7 уроков
Уроки Unity C# для начинающих
11 уроков
Разработка 2D игры на C# WinForms
8 уроков
Xamarin Forms / Мобильные приложения на C#
10 уроков
Изучение C# и создание Windows программ
Создание C# WPF игры / Разработка игры с дизайном
6 уроков
Комментарии (7)
Добавить комментарий

АНДРЕЙ 07 июня 2025 в 03:54

using System;
using System.Collections.Generic;



public class MainClass
{

public static int Otvet (int vrem,int skor)
{
int rast = vrem * skor;
return rast;
}
public static void vivod(int rast)
{
if (rast == 1)
{
Console.WriteLine("Вы проедете: 1 километр");
}
else
{
Console.WriteLine("Вы проедете: "+rast+ " километров");
}
}

public static void Main()
{
int vrem = Convert.ToInt32(Console.ReadLine());
int skor = Convert.ToInt32(Console.ReadLine());
int rast = Otvet(vrem, skor);
vivod(rast);
}
}
Ответить

Karyna 08 ноября 2024 в 13:51

Мой код очень схож с вашим в задании ,но подчеркивает название метода Ravenstvo и выдает ошибку "не все пути к коду возвращают значение". Как быть ? Спасибо

public static char Ravenstvo(int a, int b)
{
if (a==b)
return( '=');
else if (a<b)
return( '<');
else if (a>b)
return ('>');


}
public static void Main()
{
Console.OutputEncoding = Encoding.UTF8;

int a1, b1;
Console.WriteLine("Please insert a number1:");
a1=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please insert a number2:");
b1 = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(Ravenstvo(a1,b1));


Console.ReadKey();
}
Ответить

Дэн 17 ноября 2024 в 03:43

Жалоба идёт на то, что у тебя нет варианта, при котором у тебя ложны все поставленные условия.
Есть несколько вариантов решения:

if (a == b)
return (&#039;=&#039;);
else if (a &lt; b)
return (&#039;&lt;&#039;);
else if (a &gt; b)
return (&#039;&gt;&#039;);
else
return &#039; &#039;;

char c = &#039; &#039;;
if (a == b)
c = &#039;=&#039;;
else if (a &lt; b)
c = &#039;&lt;&#039;;
else if (a &gt; b)
c = &#039;&gt;&#039;;

return c;

Илья 16 марта 2024 в 00:04

При копировании моего кода сюда, копирование отсюда обратно выдает ошибку. Как будто я не прописывал "using System.Collections.Generic;" в начале, странно
Ответить

Илья 15 марта 2024 в 23:45

Сделал вот такой вот прикольный код на основе кода с функцией из виде:

using System.Collections.Generic;
namespace Tutorial
{
class Program
{
static void Main()
{
Random rnd = new();
List<int> sm = [];
short q, m = 0;
// q = Convert.ToInt16(rnd.Next(1, 300));
Console.Write("Введите количество элементов в массиве: ");
q = Convert.ToInt16(Console.ReadLine());
Console.Write("Введите максимальное/минимальное значение случайности: ");
short vMinMax = Convert.ToInt16(Console.ReadLine());
for (byte i = 0; i < q; i++)
sm.Add(Convert.ToInt16(rnd.Next(-vMinMax, vMinMax)));
string w;
Console.Write("Элементы массива: ");
foreach (short e in sm)
{
m++;

if (sm.Count == m)
{
w = Convert.ToString(e + ".");
Console.WriteLine(w);
}

else if (sm.Count >= 20)
{
if (m % 20 == 0)
{
w = Convert.ToString(e + ",");
Console.WriteLine(w);
}

else
{
w = Convert.ToString(e + ", ");
Console.Write(w);
}
}

else
{
w = Convert.ToString(e + ", ");
Console.Write(w);
}
}

int sum = Sum(sm);
Console.WriteLine("Сумма чисел массива: {0}", sum);
Console.WriteLine("Количество элементов массива: {0}", sm.Count);
Console.ReadKey();
}
public static int Sum(List<int> sum)
{
int s = 0;
foreach (int sm in sum)
{
s += sm;
}
return s;
}
}
}
Ответить

Артур 17 января 2024 в 10:00

Альтернативный вариант для второго задания

using System;

namespace Project
{
class Program
{
static void Main()
{
int a;
int b;

Console.WriteLine("Введите первое число:");
a = int.Parse(Console.ReadLine());

Console.WriteLine("Введите второе число:");
b = int.Parse(Console.ReadLine());

s(a, b);
}

public static void s(int x, int y)
{
if (x == y)
{
Console.WriteLine(x + "=" + y);
}
else if (x > y)
{
Console.WriteLine(x + ">" + y);
}
else
{
Console.WriteLine(x + "<" + y);
}
}
}
}
Ответить

Ефрем 01 ноября 2022 в 13:47

Консоль сразу закрывается, а команда Console.ReadKey - считывается как ошибка. Пожалуйста, помогите решить проблему
Ответить

Maks 06 ноября 2022 в 17:09

Может вы забыли добавить скобки в конце? ( Console.ReadKey() )

Показать все комментарии