TOC

This article has been localized into Serbian by the community.

Основи:

Функције

Функције вам омогућавају да инкапсулирате део кода и позовете га из неког другог дела кода. Вероватно ћете ускоро доспети у ситуацију у којој ћете морати да поновите део кода на више места. Управо то је место за примену функција. У програмском језику C# функције се најједноставније декларишу на следећи начин:

<visibility> <return type> <name>(<parameters>)
{
<function code>
}

Да бисте позвали функцију, једноставно напишите име функције, отворену заграду, параметре, ако их има, и затворену заграду:

DoStuff();

Ево примера функције DoStuff():

public void DoStuff()
{
    Console.WriteLine("I'm doing something...");
}

Први део, public, јесте видљивост метода и овај део није обавезан. Ако не дефинишете видљивост, функција ће бити private. Више о томе касније. Затим следи тип податка који метод враћа. То може бити било који валидан тип који постоји у програмском језику C# или, као што смо овде урадили, void. void значи да функција не враћа апсолутно ништа. Осим тога, ова функција не узима параметре, што можете видети на основу празних заграда. Сада ћемо то да променимо:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    return result;
}

Променили смо скоро све. Функција сада враћа цео број, узима два параметра (од којих су оба цели бројеви) и, уместо исписивања, врши калкулацију и враћа резултат. То значи да можемо да саберемо два броја који се налазе на различитим местима у нашем коду једноставно позивајући ову функцију уместо да сваки пут пишемо код калкулације. Иако на овом малом примеру нећемо уштедети много времена и труда, верујте, што више користите C#, више ћете волети функције. Ову функцију позивамо на следећи начин:

int result = AddNumbers(10, 5);
Console.WriteLine(result);

Као што смо већ поменули, ова функција враћа нешто. Ако као тип повратне вредности декларишемо било који тип података уместо void, функција мора да врати нешто. Ако покушате да уклоните ред кода који садржи команду return видећете да ће се компилатор жалити:

'AddNumbers(int, int)': not all code paths return a value

Компилатор нас подсећа да смо креирали функцију која не враћа ништа, иако смо је декларисали тако да мора да врати одређену вредност. А компилатор није глуп! Уместо одстрањивања реда кода, покушајте ово:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
}

Видећете идентичну грешку. А зашто? Зато што не постоји гаранција да ће ваша кондиционална теза бити испуњена, те да ће ред кода унутар њеног домета бити извршен. То можете решити тако што ћете додати још једну наредбу за враћање на крају:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
    return 0;
}

Ово решава проблем који смо сами створили, али истовремено показује и да функција може садржати више од једне наредбе за враћање. Чим код дође до наредбе за враћање, он напушта функцију и остатак кода се не извршава. То у овом случају значи да докле год је резултат већи од 10, код никада неће доћи до return 0.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!