The actions of a program are expressed using statements. C# supports several different kinds of
statements, a number of which are defined in terms of embedded statements.
A block permits multiple statements
to be written in contexts where a single statement is allowed. A block consists
of a list of statements written between the delimiters { and }.
Declaration statements are used to
declare local variables and constants.
Expression statements are used to
evaluate expressions. Expressions that can be used as statements include method
invocations, object allocations using the new operator, assignments using = and the
compound assignment operators, increment and decrement operations using the ++ and -- operators
and await expressions.
Selection statements are used to
select one of a number of possible statements for execution based on the value
of some expression. In this group are the if and switch statements.
Iteration statements are used to
repeatedly execute an embedded statement. In this group are the while, do, for, and foreach
statements.
Jump statements are used to transfer
control. In this group are the break, continue, goto, throw, return, and yield statements.
The try...catch statement
is used to catch exceptions that occur during execution of a block, and the try...finally
statement is used to specify finalization code that is always executed, whether
an exception occurred or not.
The checked
and unchecked
statements are used to control the overflow checking context for integral-type
arithmetic operations and conversions.
The lock
statement is used to obtain the mutual-exclusion lock for a given object,
execute a statement, and then release the lock.
The using
statement is used to obtain a resource, execute a statement, and then dispose
of that resource.
The following table lists C#’s statements and provides an
example for each one.
Statement
|
Example
|
Local variable declaration
|
static
void
int a; int b = 2, c = 3; a = 1; Console.WriteLine(a + b + c); } |
Local constant declaration
|
static
void
const float pi = 3.1415927f; const int r = 25; Console.WriteLine(pi * r * r); } |
Expression statement
|
static
void
int i; i = 123; // Expression statement Console.WriteLine(i); // Expression statement i++; // Expression statement Console.WriteLine(i); // Expression statement } |
if
statement
|
static
void
if (args.Length == 0) { Console.WriteLine("No arguments"); } else { Console.WriteLine("One or more arguments"); } } |
switch
statement
|
static
void
int n = args.Length; switch (n) { case 0: Console.WriteLine("No arguments"); break; case 1: Console.WriteLine("One argument"); break; default: Console.WriteLine("{0} arguments", n); break; } } } |
while
statement
|
static
void
int i = 0; while (i < args.Length) { Console.WriteLine(args[i]); i++; } } |
do
statement
|
static
void
string s; do { s = Console.ReadLine(); if (s != null) Console.WriteLine(s); } while (s != null); } |
for
statement
|
static
void
for (int i = 0; i < args.Length; i++) { Console.WriteLine(args[i]); } } |
foreach
statement
|
static
void
foreach (string s in args) { Console.WriteLine(s); } } |
break
statement
|
static
void
while (true) { string s = Console.ReadLine(); if (s == null) break; Console.WriteLine(s); } } |
continue
statement
|
static
void
for (int i = 0; i < args.Length; i++) { if (args[i].StartsWith("/")) continue; Console.WriteLine(args[i]); } } |
goto
statement
|
static
void
int i = 0; goto check; loop: Console.WriteLine(args[i++]); check: if (i < args.Length) goto loop; } |
return
statement
|
static
int Add(int a, int b) {
return a + b; }
static
void
Console.WriteLine(Add(1, 2)); return; } |
yield
statement
|
static
IEnumerable<int> Range(int from, int to) {
for (int i = from; i < to; i++) { yield return i; } yield break; }
static
void Main() {
foreach (int x in Range(-10,10)) { Console.WriteLine(x); } } |
throw
and try
statements |
static
double Divide(double x, double y) {
if (y == 0) throw new DivideByZeroException(); return x / y; }
static
void
try { if (args.Length != 2) { throw new Exception("Two numbers required"); } double x = double.Parse(args[0]); double y = double.Parse(args[1]); Console.WriteLine(Divide(x, y)); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine(“Good bye!”); } } |
checked
and unchecked
statements
|
static
void
int i = int.MaxValue; checked { Console.WriteLine(i + 1); // Exception } unchecked { Console.WriteLine(i + 1); // Overflow } } |
lock
statement
|
class
Account
{ decimal balance;
public void Withdraw(decimal amount) {
lock (this) { if (amount > balance) { throw new Exception("Insufficient funds"); } balance -= amount; } } } |
using
statement
|
static
void
using (TextWriter w = File.CreateText("test.txt")) { w.WriteLine("Line one"); w.WriteLine("Line two"); w.WriteLine("Line three"); } } |
Comments
Post a Comment