disable broken tests on net_4_0
[mcs.git] / docs / ecma334 / 8.6.xml
blobc9c1cda1a0b2c61a38e94e1b08743538a0701f0f
1 <?xml version="1.0"?>
2 <clause number="8.6" title="Statements" informative="true">
3   <paragraph>C# borrows most of its statements directly from C and C++, though there are some noteworthy additions and modifications. The table below lists the kinds of statements that can be used, and provides an example for each. <table_line>Statement Example </table_line>
4 <table_line>Statement lists and block </table_line>
5 <table_line>statements </table_line>
6 <table_line>static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
7 <table_line>F(); </table_line>
8 <table_line>G(); </table_line>
9 <table_line><symbol>{</symbol></table_line>
10 <table_line>H(); </table_line>
11 <table_line>I(); </table_line>
12 <table_line><symbol>}</symbol></table_line>
13 <table_line><symbol>}</symbol></table_line>
14 <table_line>Labeled statements and goto </table_line>
15 <table_line>statements </table_line>
16 <table_line>static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
17 <table_line>if (args.Length == 0) </table_line>
18 <table_line>goto done; </table_line>
19 <table_line>Console.WriteLine(args.Length); </table_line>
20 <table_line/>
21 <table_line>done: </table_line>
22 <table_line>Console.WriteLine(&quot;Done&quot;); </table_line>
23 <table_line><symbol>}</symbol></table_line>
24 <table_line>Local constant declarations static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
25 <table_line>const <keyword>float</keyword> pi = 3.14f; </table_line>
26 <table_line>const <keyword>int</keyword> r = 123; </table_line>
27 <table_line>Console.WriteLine(pi * r * r); </table_line>
28 <table_line><symbol>}</symbol></table_line>
29 <table_line>Local variable declarations static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
30 <table_line><keyword>int</keyword> a; </table_line>
31 <table_line><keyword>int</keyword> b = 2, c = 3; </table_line>
32 <table_line>a = 1; </table_line>
33 <table_line>Console.WriteLine(a + b + c); </table_line>
34 <table_line><symbol>}</symbol></table_line>
35 <table_line>Expression statements static <keyword>int</keyword> F(<keyword>int</keyword> a, <keyword>int</keyword> b) <symbol>{</symbol> </table_line>
36 <table_line>return a + b; </table_line>
37 <table_line><symbol>}</symbol></table_line>
38 <table_line>static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
39 <table_line>F(1, 2); // Expression statement </table_line>
40 <table_line><symbol>}</symbol></table_line>
41 <table_line>if statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
42 <table_line>if (args.Length == 0) </table_line>
43 <table_line>Console.WriteLine(&quot;No args&quot;); </table_line>
44 <table_line>else </table_line>
45 <table_line>Console.WriteLine(&quot;Args&quot;); </table_line>
46 <table_line><symbol>}</symbol></table_line>
47 <table_line>switch statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
48 <table_line>switch (args.Length) <symbol>{</symbol> </table_line>
49 <table_line>case 0: </table_line>
50 <table_line>Console.WriteLine(&quot;No args&quot;); </table_line>
51 <table_line>break; </table_line>
52 <table_line>case 1: </table_line>
53 <table_line>Console.WriteLine(&quot;One arg &quot;); </table_line>
54 <table_line>break; </table_line>
55 <table_line>default: </table_line>
56 <table_line><keyword>int</keyword> n = args.Length; </table_line>
57 <table_line>Console.WriteLine(&quot;{0} args&quot;, n); </table_line>
58 <table_line>break; </table_line>
59 <table_line><symbol>}</symbol></table_line>
60 <table_line><symbol>}</symbol></table_line>
61 <table_line>while statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
62 <table_line><keyword>int</keyword> i = 0; </table_line>
63 <table_line>while (i &lt; args.Length) <symbol>{</symbol> </table_line>
64 <table_line>Console.WriteLine(args[i]); </table_line>
65 <table_line>i++; </table_line>
66 <table_line><symbol>}</symbol></table_line>
67 <table_line><symbol>}</symbol></table_line>
68 <table_line>do statements static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
69 <table_line>string s; </table_line>
70 <table_line>do <symbol>{</symbol> s = Console.ReadLine(); <symbol>}</symbol> </table_line>
71 <table_line>while (s != &quot;Exit&quot;); </table_line>
72 <table_line><symbol>}</symbol></table_line>
73 <table_line>for statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
74 <table_line>for (<keyword>int</keyword> i = 0; i &lt; args.Length; i++) </table_line>
75 <table_line>Console.WriteLine(args[i]); </table_line>
76 <table_line><symbol>}</symbol></table_line>
77 <table_line>foreach statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
78 <table_line>foreach (string s in args) </table_line>
79 <table_line>Console.WriteLine(s); </table_line>
80 <table_line><symbol>}</symbol></table_line>
81 <table_line>break statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
82 <table_line><keyword>int</keyword> i = 0; </table_line>
83 <table_line>while (true) <symbol>{</symbol> </table_line>
84 <table_line>if (i == args.Length) </table_line>
85 <table_line>break; </table_line>
86 <table_line>Console.WriteLine(args[i++]); </table_line>
87 <table_line><symbol>}</symbol></table_line>
88 <table_line><symbol>}</symbol></table_line>
89 <table_line>continue statements static <keyword>void</keyword> Main(string[] args) <symbol>{</symbol> </table_line>
90 <table_line><keyword>int</keyword> i = 0; </table_line>
91 <table_line>while (true) <symbol>{</symbol> </table_line>
92 <table_line>Console.WriteLine(args[i++]); </table_line>
93 <table_line>if (i &lt; args.Length) </table_line>
94 <table_line>continue; </table_line>
95 <table_line>break; </table_line>
96 <table_line><symbol>}</symbol></table_line>
97 <table_line><symbol>}</symbol></table_line>
98 <table_line>return statements static <keyword>int</keyword> F(<keyword>int</keyword> a, <keyword>int</keyword> b) <symbol>{</symbol> </table_line>
99 <table_line>return a + b; </table_line>
100 <table_line><symbol>}</symbol></table_line>
101 <table_line>static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
102 <table_line>Console.WriteLine(F(1, 2)); </table_line>
103 <table_line>return; </table_line>
104 <table_line><symbol>}</symbol></table_line>
105 <table_line>throw statements and try </table_line>
106 <table_line>statements </table_line>
107 <table_line>static <keyword>int</keyword> F(<keyword>int</keyword> a, <keyword>int</keyword> b) <symbol>{</symbol> </table_line>
108 <table_line>if (b == 0) </table_line>
109 <table_line>throw new Exception(&quot;Divide by zero&quot;); </table_line>
110 <table_line>return a / b; </table_line>
111 <table_line><symbol>}</symbol></table_line>
112 <table_line>static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
113 <table_line>try <symbol>{</symbol> </table_line>
114 <table_line>Console.WriteLine(F(5, 0)); </table_line>
115 <table_line><symbol>}</symbol></table_line>
116 <table_line>catch(Exception e) <symbol>{</symbol> </table_line>
117 <table_line>Console.WriteLine(&quot;Error&quot;); </table_line>
118 <table_line><symbol>}</symbol></table_line>
119 <table_line><symbol>}</symbol></table_line>
120 <table_line>checked and unchecked </table_line>
121 <table_line>statements </table_line>
122 <table_line>static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
123 <table_line><keyword>int</keyword> x = Int32.MaxValue; </table_line>
124 <table_line>Console.WriteLine(x + 1); // Overflow </table_line>
125 <table_line>checked <symbol>{</symbol> </table_line>
126 <table_line>Console.WriteLine(x + 1); // Exception </table_line>
127 <table_line><symbol>}</symbol></table_line>
128 <table_line>unchecked <symbol>{</symbol> </table_line>
129 <table_line>Console.WriteLine(x + 1); // Overflow </table_line>
130 <table_line><symbol>}</symbol></table_line>
131 <table_line><symbol>}</symbol></table_line>
132 <table_line/>
133 <table_line>lock statements static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
134 <table_line>A a = ...; </table_line>
135 <table_line>lock(a) <symbol>{</symbol> </table_line>
136 <table_line>a.P = a.P + 1; </table_line>
137 <table_line><symbol>}</symbol></table_line>
138 <table_line><symbol>}</symbol></table_line>
139 <table_line>using statements static <keyword>void</keyword> Main() <symbol>{</symbol> </table_line>
140 <table_line>using (Resource r = new Resource()) <symbol>{</symbol> </table_line>
141 <table_line>r.F(); </table_line>
142 <table_line><symbol>}</symbol></table_line>
143 <table_line><symbol>}</symbol></table_line>
144 </paragraph>
145 </clause>