You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.5 KiB

Methods


Overview

Functions

Methods

Parameters

Return Values

Scope of Methods

What is a function?

  • Functions are self contained modules of code that accomplish a specific task.
  • Function is basically a block of code that can be executed over and over again in the program
    • Instead of writing the same code over and over again to the program, it can be written only once as a function
  • Functions can get data, parameters , from the caller
  • Functions can return data, return value , to the caller
  • Defining parameters and return values are optional, not all functions have both and some have neither!

Function execution

  • When a function is called the program leaves the current section of the code and begins to execute the first line of code inside the function.
  • The program execution comes to the line of code where the function call is
  • The program enters the function
  • Instructions inside the function are executed from top to bottom
    • Remember scopes: The variables defined inside the function are not visible outside the function!
  • The program leaves the function and returns to the point where the function call was and continues the execution
  • If function returned any data, it can be used where the function was called

Methods

In C#, __methods __ are functions which are inside of a class

Since the main function is inside of a class, all functions in C# are actually just called methods

  • A methods are executed only when it is called
  • For example, Console.WriteLine() is a method which contains more complex code to print stuff on to the console
    • Instead of writing all that complex stuff at every printout, you can just use the short method call Console.WriteLine()
  • The use of methods reduces repetitive code, adds modularity and makes designing your programs easier

Methods - Example

class Program

{

static void Main(string[] args)

{

void PrintBlock()

{

Console.WriteLine("---------------------");

Console.WriteLine("| This is cool but |");

Console.WriteLine("| you wouldn't want |");

Console.WriteLine("| to write this |");

Console.WriteLine("| block of code |");

Console.WriteLine("| every time! |");

Console.WriteLine("---------------------");

}

PrintBlock();

PrintBlock();

PrintBlock();

}

}

  • In this example, we declared a new method called PrintBlock
  • Finally the method was called three times
  • Each time the entire code inside the method was executed
  • The void statement means that the method does not return anything
    • More on that later

Parameters

Sometimes you want to pass data into the method when calling it

This is done by adding __parameters __ to the method declaration, inside the brackets:

void PrintSum(int val1, int val2)

{

int sum = val1 + val2;

Console.WriteLine("Sum of " + val1 + " and " + val2 + " is " + sum);

}

The values to be passed are set as __arguments __ in the method call, inside the brackets:

PrintSum(2, 5); // Outputs "Sum of 2 and 5 is 7

PrintSum(5, 5); // Outputs "Sum of 5 and 5 is 10

Parameters - Example

static void Main(string[] args)

{

int centuriesPrinted = 0;

void PrintCentury(int century)

{

centuriesPrinted++;

Console.WriteLine("Current century: " + century);

Console.WriteLine("Total centuries printed: " + centuriesPrinted);

}

for (int i = 0; i < 500; i += 100)

{

PrintCentury(i);

}

}

Optional Parameters

You can give a parameter a default value by assigning it in the method declaration

This makes the parameter optional

double CircleArea(double radius = 0)

{

double area = Math.PI * radius * radius;

return area;

}

Console.WriteLine(CircleArea()); // This outputs 0

Console.WriteLine(CircleArea(2)); // This outputs 12,56637...

Exercise 1

Write two methods Sum and Difference, which both have two parameters of type int, named value1 and value2. Sum should print "The sum of value1 and value2 is sum ", and Difference should print "The difference of value1 and value2 is difference .

Call the methods from the main method multiple times with different values.

Return Values

The return value of a method is __returned __ with the return keyword:

double radius = 2;

Console.WriteLine(CircleArea(radius)); // Outputs 12,56637...

double CircleArea(double radius)

{

double area = Math.PI * radius * radius;

return area;

}

In the first examples, the method declarations started with the void expression, which means that the method doesn't return anything

Here the method was declared as type double, which means that the method has to return a variable of type double

Multiple Return Values

It is possible to return multiple values in the form of a tuple :

(string, string) FirstAndLastName(string fullname)

{

string[] names = fullname.Split(' ');

return (names[0], names[names.Length - 1]);

}

(string first, string last) = FirstAndLastName("Hans \"Dolph\" Lundgren");

Console.WriteLine($"First name: {first}, last name: {last}");

// Outputs "First name: Hans, last name: Lundgren"

If only one value from a tuple is needed, you can use a __discard __ (_)

// Only last name is allocated to a variable

(_, string lastName) = FirstAndLastName("Arnold Alois Schwarzenegger");

Scope of Methods

The variables declared inside of a method are local variables and only accessible inside of that method

void ScopeExample()

{

// Variable 'a' is only accessible inside of this method

int a = 10;

a = 20; // This works

}

a = 30; // This throws an error

Exercise 2

Write a method that takes a string as a parameter and prints the total number of spaces in that string.

Without using the string.Trim() method, modify the method so that it removes the spaces in a string and returns the new string.

(Hint: You can iterate a string just like arrays and lists.)

Exercise 3

Write a method that takes a string as a parameter and prints each unique letter in that string.

Write a new method that takes a string as a parameter and prints the number of each unique letter in the string.

Exercise 4

Write a method that takes a 10 digit number as a parameter and divides individual digits into even and odd arrays. Method should return both arrays.

Remember to check that method accepts only numbers.

Assignments

Assignments about this topic can be found here