How do Methods Work?
Let’s write a method that adds two integer values together and returns the result.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } This specifies the return type of the method. That is, this method will return an integer. Methods can only return one thing.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } This is the name of the method.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } These are the method’s parameters. A method can have any number of parameters, including none. The Parameters define the variables passed to the method when it is invoked.
A complete program using the add( ) method using System; class Program { static void Main() { int var1 = 8; int var2 = 5; int var3 = add(var1, var2); Console.WriteLine(var3); Console.ReadLine(); } // the add method // purpose: adds two integers // parameters: the integers to add together // returns: the sum static int add(int n1, int n2) { int sum = n1 + n2; return sum; }
A complete program using the add( ) method It is common to put the code for the method following Main( ) using System; class Program { static void Main() { int var1 = 8; int var2 = 5; int var3 = add(var1, var2); Console.WriteLine(var3); Console.ReadLine(); } // the add method // purpose: adds two integers // parameters: the integers to add together // returns: the sum static int add(int n1, int n2) { int sum = n1 + n2; return sum; }
A complete program using the add( ) method This is the line of code that actually calls, or invokes, the method. Two values are passed to the method. The method returns a value which is then stored in var3. using System; class Program { static void Main() { int var1 = 8; int var2 = 5; int var3 = add(var1, var2); Console.WriteLine(var3); Console.ReadLine(); } // the add method // purpose: adds two integers // parameters: the integers to add together // returns: the sum static int add(int n1, int n2) { int sum = n1 + n2; return sum; }
int var1 = 8; int var2 = 5; int var3 = add(var1, var2); Looking at the method call in more detail … The values of 8 and 5 get passed to the method..
var1 var25 8 add Let’s Investigate what happens … We will treat the method as a black box. It is important to note that we can’t see inside. var3
var1 var25 8 add Let’s Investigate what happens … We know what a method does by reading it’s prologue. var3
var1 var25 8 Make a copy of the variables. We don’t want the add method to change the original variables. add var3 Let’s Investigate what happens …
var1 var25 8 Make a copy of the variables. add 8 var3 Let’s Investigate what happens …
var1 var25 8 Make a copy of the variables. 8 add var3 Let’s Investigate what happens …
var1 var25 8 Make a copy of the variables. 8 add var3 5 Let’s Investigate what happens …
5 add Pass the copies of the variables to the method var1 var25 8 var3 8 Let’s Investigate what happens …
5 add Pass the copies of the variables to the method var1 var25 8 var3 Let’s Investigate what happens …
Inside of the Black Box static int add(int n1, int n2) { int sum = n1 + n2; return sum; } These are the method’s formal parameters. Notice that when inside of the box, we can’t see out.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum These variables are local to the method. They only exist inside of the box. Inside of the Black Box
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum 5 Inside of the Black Box Here comes the first value passed to the method.
Inside of the Black Box static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum 8 It gets stored in the local variable n1. 8
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum 5 8 Here comes the second value passed to the method. Inside of the Black Box
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum 8 5 Inside of the Black Box 5 It gets stored in the local variable n2.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum Inside of the Black Box Now the code of the method is executed.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum Inside of the Black Box We need to pass sum back to the point where the method was called. So, we make a copy of sum.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum Inside of the Black Box … and pass it back to the caller.
static int add(int n1, int n2) { int sum = n1 + n2; return sum; } n1 n2 sum Inside of the Black Box … and pass it back to the caller.
int var1 = 8; int var2 = 5; int var3 = add(var1, var2); Looking at the method call in more detail … The method returns the value of 13 right here. The value is assigned to var3.
add Get the result var1 var25 8 var3 Let’s Investigate what happens … 13
var1 var25 8 Store the returned value in the variable that it was assigned to. add var3 13 Let’s Investigate what happens …
var1 var25 8 add var3 13 Let’s Investigate what happens … We’re Done!