210 likes | 333 Views
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. Part 1. Statements…. Statements in C#. C# supports the standard assortment… Assignment
E N D
Objectives “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” • Statements • Methods
Part 1 • Statements…
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
Examples x = obj.foo(); if (x > 0 && x < 10) count++; else if (x == -1) ... else { ... } while (x > 0) { ... x--; } for (int k = 0; k < 10; k++) { ... }
Other statements • C# contains a couple surprises… • data structure iteration via foreach • namespace importing via using
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 (int xin data) { sum += x; } foreach type value collection
using • using directive allows unqualified access to namespace • a convenience mechanism only… • still must ref underlying assembly namespace Workshop { public class Customer { . . . } public class Product { . . . } } // before Workshop.Customer c; c = new Workshop.Customer("joe hummel", 94652); // after using Workshop; Customer c; c = new Customer("joe hummel", 94652);
Complete example • using directive(s) specified at top of file namespace Workshop { public class Customer { . . . } public class Product { . . . } } /* main.cs */ using System; using Workshop; public class App { public static void Main() { Customer c; c = new Customer("joe hummel", 94652); Console.WriteLine( c.ToString() ); } }
Part 2 • Methods…
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
Example • Array class in FCL • fully-qualified name is System.Array namespace System { public class Array { public int GetLength(int dimension) { ... } public static void Sort(Array a) { ... } . . . } } instance method(absence of static) static method(presence of static)
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]); } }
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); } }
Parameter passing • C# offers three options: • pass-by-value (default) • pass-by-reference • pass-by-result ("copy-out")
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 void F(int x) { x = 0; } value parameter int y = 9; F(y); y unchanged
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; G(ref y); y set to 10
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 void H(out int x) { x = 0; } out parameter assignment required int y; H(out y); y set to 0
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
References • Books: • I. Pohl, "C# by Dissection" • S. Lippman, "C# Primer" • J. Mayo, "C# Unleashed"
Lab? • Work on lab #2, "Types, Stmts and Methods"…