4. Statements and Methods

Download Report

Transcript 4. Statements and Methods

4. Statements and Methods
Objectives
“With regards to programming statements and methods, C# offers
what you would come to expect from a modern OOPL…”
• Statements
• Methods
Microsoft
2
Part 1
• Statements…
Microsoft
3
Statements in C#
• C# supports the standard assortment…
• Assignment
• Subroutine and function call
• Conditional
– if, switch
• Iteration
– for, while, do-while
• Control Flow
– return, break, continue, goto
Microsoft
4
Examples
x = obj.foo();
if (x > 0 && x < 10)
count++;
else if (x == -1)
...
else {
...
while (x > 0)
}
{
...
x--;
}
Microsoft
for (int k = 0; k < 10; k++)
{
...
}
5
Other statements
• C# contains a couple surprises…
– data structure iteration via foreach
– namespace importing via using
Microsoft
6
foreach
• Specialized foreach loop provided for collections like array
– reduces risk of indexing error
– provides read only access
int[] data = { 1, 2, 3, 4, 5 };
int
sum = 0;
foreach
foreach (int x in data)
{
sum += x;
}
type value
Microsoft
collection
7
using
• using directive allows unqualified access to namespace
– a convenience mechanism only…
namespace Workshop
– still must ref underlying assembly
{
// before
Workshop.Customer c;
c = new Workshop.Customer("joe hummel", 94652);
// after
public class Customer
{
.
.
.
}
public class Product
{
.
.
.
}
}
using Workshop;
Customer c;
c = new Customer("joe hummel", 94652);
Microsoft
8
Complete example
• using directive(s) specified at top of file
/* main.cs */
namespace Workshop
{
public class Customer
{
.
.
.
}
using System;
using Workshop;
public class App
{
}
public static void Main()
{
Customer c;
c = new Customer("joe hummel", 94652);
Console.WriteLine( c.ToString() );
}
}
Microsoft
public class Product
{
.
.
.
}
9
Part 2
• Methods…
Microsoft
10
Types of methods
• Classes contain 2 types of methods:
– those with no return value (void)
– those with a return value (int, string, etc.)
• Methods may be:
– instance
– static
• Instance methods require an object to call
• Static methods are global and thus require only class name
Microsoft
11
Example
• Array class in FCL
– fully-qualified name is System.Array
instance method
(absence of static)
namespace System
{
public class Array
{
public int GetLength(int dimension)
{ ... }
public static void Sort(Array a)
{ ... }
static method
(presence of static)
.
.
.
}
Microsoft
}
12
Calling methods
• Here's an example of calling into the Array class:
/* main.cs */
using System;
public class App
{
public static void Main()
{
int[] data = { 11, 7, 38, 55, 3 };
Array.Sort(data);
for (int i=0; i<data.GetLength(0); i++)
Console.WriteLine(i + ": " + data[i]);
}
}
Microsoft
13
Other useful static methods
• A program to add 2 integers and output the sum:
using System;
public class Calculator
{
public static void Main()
{
string input, output;
int
a, b, sum;
Console.Write("Enter first integer: ");
input = Console.ReadLine();
a = Convert.ToInt32(input);
Console.Write("Enter second integer: ");
input = Console.ReadLine();
b = Convert.ToInt32(input);
sum = a + b;
output = String.Format("{0} + {1} = {2}", a, b, sum);
Console.WriteLine(output);
}
}
Microsoft
14
Parameter passing
• C# offers three options:
– pass-by-value (default)
– pass-by-reference
– pass-by-result ("copy-out")
Microsoft
15
Pass-by-value
• Pass by value is default parameter passing mechanism
– data copied into method
– any changes to parameter inside method affect local copy only
value parameter
void F(int x)
{
x = 0;
}
int y = 9;
y unchanged
Microsoft
F(y);
16
Pass-by-reference
• ref parameter passes data in and out
– use keyword ref in definition and call
– must use variable in call
– must initialize passed variable before call
ref parameter,
initially 9
void G(ref int x)
{
x += 1;
}
int y = 9;
y set to 10
Microsoft
G(ref y);
17
Pass-by-result ("copy-out")
• out parameter returns data through parameter
– use keyword out in both definition and call
– must use variable in call
– must assign to parameter inside method or compiler error
out parameter
assignment required
void H(out int x)
{
x = 0;
}
int y;
y set to 0
Microsoft
H(out y);
18
Summary
• Standard statements, a few non-standard ones
– assignment, if, for, while, foreach, using
• Two types of methods
– instance methods require an object to call
– static methods are global and thus require only class name
Microsoft
19
References
• Books:
– I. Pohl, "C# by Dissection"
– S. Lippman, "C# Primer"
– J. Mayo, "C# Unleashed"
Microsoft
20
Lab?
• Work on lab #2, "Types, Stmts and Methods"…
Microsoft
21