| PART 1 Introduction to C# | 1 |
| Programming in C# | 1 |
| General Structure of a C# Program | 2 |
| PART 2 C# Keywords | 3 |
| The Keywords | 3 |
| Access Keywords | 4 |
| base | 4 |
| this | 7 |
| Conversion Keywords | 9 |
| explicit | 9 |
| implicit | 11 |
| operator | 12 |
| Literal Keywords | 14 |
| null | 14 |
| true | 15 |
| false | 16 |
| Method Parameter Keywords | 17 |
| params | 17 |
| ref | 18 |
| out | 19 |
| Modifiers | 20 |
| Access Modifiers | 21 |
| abstract | 31 |
| const | 34 |
| event | 36 |
| extern | 42 |
| override | 44 |
| readonly | 46 |
| sealed | 47 |
| static | 48 |
| unsafe | 50 |
| virtual | 51 |
| volatile | 54 |
| Namespace Keywords | 55 |
| namespace | 55 |
| using | 57 |
| Operator Keywords | 61 |
| as | 62 |
| is | 63 |
| new | 65 |
| sizeof | 70 |
| typeof | 71 |
| true | 73 |
| false | 74 |
| stackalloc | 75 |
| Statement Keywords | 76 |
| Selection Statements | 76 |
| Iteration Statements | 82 |
| Jump Statements | 96 |
| Exception Handling Statements | 102 |
| Checked and Unchecked | 109 |
| fixed Statement | 116 |
| lock Statement | 118 |
| Type Keywords | 120 |
| Value Types | 121 |
| Boxing and Unboxing | 146 |
| Reference Types | 149 |
| Types Reference Tables | 161 |
| PART 3 C# Features | 169 |
| Operators | 169 |
| Overloadable Operators | 170 |
| [] Operator | 171 |
| () Operator | 172 |
| . Operator | 173 |
| + Operator | 174 |
| - Operator | 175 |
| * Operator | 176 |
| / Operator | 177 |
| % Operator | 178 |
| & Operator | 179 |
| | Operator | 180 |
| ^ Operator | 181 |
| ! Operator | 182 |
| ~ Operator | 183 |
| = Operator | 184 |
| < Operator | 185 |
| > Operator | 186 |
| ?: Operator | 187 |
| ++ Operator | 188 |
| -- Operator | 189 |
| Operators | |
| && Operator | 190 |
| || Operator | 192 |
| << Operator | 193 |
| >> Operator | 194 |
| == Operator | 195 |
| != Operator | 196 |
| <= Operator | 198 |
| >= Operator | 199 |
| += Operator | 200 |
| -= Operator | 201 |
| *= Operator | 202 |
| /= Operator | 203 |
| %= Operator | 204 |
| &= Operator | 205 |
| |= Operator | 206 |
| ^= Operator | 207 |
| <<= Operator | 208 |
| >>= Operator | 209 |
| -> Operator | 210 |
| Attributes | 211 |
| Introduction to Attributes | 211 |
| AttributeUsage | 218 |
| Conditional | 219 |
| Obsolete | 221 |
| Attributes Tutorial | 222 |
| Declarations | 229 |
| Members | 231 |
| Namespace Members | 232 |
| Struct Members | 232 |
| Class Members | 233 |
| Other Members | 233 |
| Member Access | 233 |
| Declared Accessibility | 234 |
| Accessibility Domains | 235 |
| Protected Access for Instance Members | 238 |
| Accessibility Constraints | 239 |
| Preprocessor Directives | 240 |
| #if | 240 |
| #else | 241 |
| #elif | 242 |
| #endif | 243 |
| #define | 243 |
| #undef | 244 |
| #warning | 244 |
| #error | 245 |
| #line | 246 |
| #region | 247 |
| #endregion | 247 |
| Arrays | 248 |
| Single-Dimensional Arrays | 248 |
| Multidimensional Arrays | 250 |
| Jagged Arrays | 252 |
| Passing Arrays Using ref and out | 254 |
| Arrays Tutorial | 256 |
| Constructors and Destructors | 261 |
| Class Constructors | 261 |
| Struct Constructors | 268 |
| Destructors | 270 |
| Indexers | 272 |
| Indexer Declaration | 273 |
| Comparison Between Properties and Indexers | 276 |
| Interface Indexers | 277 |
| Indexers Tutorial | 279 |
| Properties | 283 |
| Property Declaration | 284 |
| Accessors | 286 |
| Interface Properties | 293 |
| Properties Tutorial | 296 |
| Signatures and Overloading | 302 |
| Scopes | 303 |
| General Rules for Scopes | 304 |
| Name Hiding | 306 |
| Hiding Through Nesting | 306 |
| Hiding Through Inheritance | 307 |
| Passing Parameters | 309 |
| Main Method | 315 |
| Return Values | 315 |
| Command-Line Arguments | 316 |
| Conditional Methods Tutorial | 318 |
| Delegates Tutorial | 321 |
| Events | 328 |
| XML Documentation | 335 |
| Tags for Documentation Comments | 335 |
| Processing the XML File | 349 |
| APPENDIX C# Compiler Options | 353 |
| Building from the Command Line | 353 |
| C# Compiler Options Listed by Category | 355 |
| C# Compiler Options Listed Alphabetically | 357 |
| @ (Specify Response File) | 359 |
| /addmodule (Import Metadata) | 360 |
| /baseaddress (Specify Base Address of DLL) | 361 |
| /bugreport (Report a Problem) | 361 |
| /checked (Check Integer Arithmetic) | 362 |
| /codepage (Specify Code Page for Source Code Files) | 363 |
| /debug (Emit Debugging Information) | 364 |
| /define (Preprocessor Definition) | 365 |
| /doc (Process Documentation Comments) | 366 |
| /filealign (Specify Section Alignment) | 367 |
| /fullpaths (Specify Absolute Path in Compiler Output) | 367 |
| /help, /? (Compiler CommandLine Help) | 368 |
| /incremental (Enable Incremental Compilation) | 368 |
| /lib (Specify Assembly Reference Locations) | 369 |
| /linkresource (Link to .NET Framework Resource) | 370 |
| /main (Specify Location of Main Method) | 371 |
| /noconfig (Ignore csc.rsp) | 372 |
| /nologo (Suppress Banner Information) | 373 |
| /nostdlib (Do Not Import Standard Library) | 373 |
| /nowarn (Suppress Specified Warnings) | 374 |
| /optimize (Enable/Disable Optimizations) | 374 |
| /out (Set Output File Name) | 375 |
| /recurse (Find Source Files in Subdirectories) | 376 |
| /reference (Import Metadata) | 377 |
| /resource (Embed Resource File to Output) | 378 |
| /target (Specify Output File Format) | 379 |
| /unsafe (Enable Unsafe Mode) | 383 |
| /utf8output (Display Compiler Messages with UTF-8) | 383 |
| /warn (Specify Warning Level) | 384 |
| /warnaserror (Treat Warnings as Errors) | 385 |
| /win32icon (Import an .ico File) | 385 |
| /win32res (Import a Win32 Resource File) | 386 |
| INDEX | 387 |