Course Description

This 5-day C# Programming Introduction training course is a practical introduction to programming in C#, utilizing the services provided by .NET. This course emphasizes the C# language. It is intended to be fully accessible to programmers who do not already have a strong background in object-oriented programming in C-like languages, such as C++ or Java™. It is ideal, for example, for Visual Basic® 6 or COBOL programmers who desire to learn C#. An important thrust of the course is to teach C# programming from an object-oriented perspective. It is often difficult for programmers trained originally in a procedural language to start “thinking in objects.” This course introduces object-oriented concepts early, and C# is developed in a way that leverages its object-orientation.

A case study is used to illustrate creating a complete system using C# and .NET. Besides supporting traditional object-oriented features, such as classes, inheritance, and polymorphism, C# introduces several additional features, such as properties, indexers, delegates, events, and interfaces that make C# a compelling language for developing object-oriented and component-based systems. This course provides thorough coverage of all these features. C# as a language is elegant and powerful. But to utilize its capabilities fully, you need to have a good understanding of how it works with the .NET Framework. The course explores several important interactions between C# and the .NET Framework, and it includes an introduction to major classes for collections, delegates, and events. It includes a succinct introduction to creating GUI programs using Windows Forms.

While this course is current to Visual Studio® 2010 and .NET 4.0, it is also relevant for users of earlier or more recent versions of .NET and Visual Studio.

Pre-requisites

Programming experience in a high-level structured language such as Pascal, COBOL, or Visual Basic. Exposure to C, C++, or Java is not a requirement.

Who is this course for?

For software developers who need to design and develop using the C# language for the .NET framework.

Further Training

After some further on-the-job programming experience with the C# language and the .NET framework, we recommend students attend our C# Programming Advanced training course to gain higher-level skills in the usage of the C# language and  .NET.

Course content

.NET: What You Need to Know
Getting Started
.NET: What is Really Happening
.NET Programming in a Nutshell
Viewing the Assembly
Viewing Intermediate Language
Understanding .NET
Visual Studio 2010
Creating a Console Application
Adding a C# file
Using the Visual Studio Text Editor
IntelliSense
Build & Run the Project
Pausing the Output
Visual C# and GUI Programs
.NET Documentation
First C# Programs
Hello, World
Compiling, Running (Command Line)
Program Structure
Namepsaces
Variables
Expressions
Assignment
Calculations Using C#
More About Output in C#
Input in C#
More About Classes
InputWrapper Class
Echo Program
Using InputWrapper
Compiling Multiple Files
Multiple Files in Visual Studio
The .NET Framework
Data Types in C#
Strong Typing
Typing in C#
Typing in C++
Typing in Visual Basic 6
C# Types
Integer Types
Integer Type Range
Integer Literals
Floating Point Types
Floating Point Literals
IEEE Standard for Floating Point
Decimal Type
Decimal Literals
Character Type
Character Literals
string
Escape Characters
Boolean Type
Implicit Conversions
Explicit Conversions
Nullable Types
Operators & Expressions
Operator Cardinality
Arithmetic Operators
Multiplication
Division
Additive Operators
Increment and Decrement
Relational Operators
Conditional Logical Operators
Short-Circuit Evaluation
Ternary Conditional Operators
Bitwise Operators
Bitwise Logical Operators
Bitwise Shift Operators
Assignment Operators
Expressions
Precedence
Associativity
Checking
Control Structures
if Test
Blocks
Loops
while Loop
do while
Loops
for
Loops
Arrays
foreach
Loop
break
continue
goto

Structure Programming
Multiple Methods
switch
switch in C# and C/C++
Object-Oriented Programming
Objects
Objects in the Real World
Object Models
Reusable Software Components
Objects in Software
State and Behavior
Abstraction
Encapsulation
Classes
Inheritance Concepts
Relationships among Classes
Polymorphism
Object-Oriented Analysis and Design
Use Cases
CRC Cards & UML
Classes
Classes as Structure Data
Classes & Objects
References
Instantiating & Using an Object
Assigning Object References
Garbage Collection
Methods
Public and Private
Abstraction
Encapsulation
Initialization
Initialization with Constructors
Default Constructor
this
Static Fields & Methods
Static Methods
Static Constructor
Constant & Readonly Fields
More about Types
Overview of Types in C#
Structures
Uninitialized Variables
Coping a Structure
Hotel.cs
HotelCopy.cs
Classes & Structs
Enumeration Types
Reference Types
Class Types
object
string
Arrays
Default Values
Boxing & Unboxing
Implicitly Types Variables
Methods, Properties, & Operators
Static & Instance Methods
Method Parameters
No “Freestanding” Functions in C#
Classes with All Static Methods
Parameter Passing
Parameter Terminology
Value Parameters
Reference Parameters
Output Parameters
Structure Parameters
Class parameters
Method Overloading
Modifiers as Part of the Signature
Variable Length Parameter Lists
Properties
Auto-Implemented Properties
Operator Overloading
Operator Overloading in the Class Library
Characters & Strings
Characters
Character Codes
ASCII & Unicode
Escape Sequences
Strings
String Class
String Literals & Initialization
Concatenation
Index
Relational Operators
String Equality
String Comparisons
String Input
String Methods & Properties
StringBuilder Class
StringBuilder Equality
Command Line Arguments
Command Line Arguments in the IDE
Command Loops
Splitting a String
Arrays & Indexers
Arrays
One Dimensional Arrays
System.Array
Random Number Generation
Next Methods
Jagged Arrays
Rectangular Arrays
Arrays as Collections
Indexers
Using the Indexer
Inheritance
Inheritance Fundamentals
Inheritance in C#
Root Class – object
Access Control
Public Class Accessibility
Internal Class Accessibility
Member Accessibility
Member Accessibility Qualifiers
Method Hiding
Method Hiding 7 Overriding
Initialization
Initialization Fundamentals
Default Constructor
Overloaded Constructors
Invoking Base Class Constructors
Virtual Methods and Polymorphism
Introduction to Polymorphism
Abstract and Sealed Classes
Virtual Methods & Dynamic Binding
Type Conversions in Inheritance
Converting Down the Hierarchy
Converting Up the Hierarchy
Virtual Methods
Virtual Method Cost
Method overriding
The Fragile Base Class Problem
override Keyword
Polymorphism
Polymorphism Using “Type Tags”
Polymorphism Using Virtual
Abstract Classes
Sealed Classes
Heterogeneous Collections
Formatting & Conversion
Introduction to Formatting
ToString
ToString in Your Own Class
Using Placeholders
Format String
Controlling Width
Format String
Currency
String.Format
PadLeft & PadRight
Type Conversions
Conversion of Built-In Types
Exceptions
Introduction to Exceptions
Exception Fundamentals
.NET Exception Handling
Exception Flow of Control
Context and Stack Unwinding
System.Exception
User-Defined Exception Classes
Structure Exception Handling
Family Block
Inner Exceptions
Checked Integer Arithmetic
Interfaces
Interfaces in C#
Interface Inheritance
Programming with Interfaces
Implementing Interfaces
Using an Interface
Dynamic Use of Interfaces
is Operator
as Operator
Apparent Redundancy
IStatement
IStatement Methods
IChecking
ISavings
The Implementation
SavingsAccount
The Client
Resolving Ambiguity
Access Modifier
.NET Interfaces & Collections
Collections
Count & Capacity
foreach Loop
Array Notation
Adding to the List
Remove Method
RemoveAt Method
Collection Interfaces
IEnumerable & IEnumerator
ICollection
IList
A Collection of User-Defined Objects
Duplicate Objects
Copy Semantics and ICloneable
Copy Semantics in C#
Shallow Copy & Deep Copy
Reference Copy
Memberwise Clone
Using ICloneable
Comparing Objects
Sorting an Array
Anatomy of Array.Sort
Using the is Operator
The Use of Dynamic Type Checking
Implementing IComparable
Running the Program
Complete Solution
Writing Generic Code
Using a Class of object
Generic Types
Generic Syntax in C#
Generic Client Code
System.Collections.Generic
Object Initializers
Collection Initializers
Anonymous Types
Delegates & Events
Overview of Delegates & Events
Callbacks & Delegates
Usage of Delegates
Declaring a Delegate
Defining a Method
Creating a Delegate Object
Calling a Delegate
A Random Array
Anonymous Methods
Combining Delegate Objects
Lambda Expressions
Named Method
Events
Events in C# and .NET
Introduction to Windows Forms
Creating a Windows Forms App
Partial Classes
Windows Forms Event Handling
Add Events for a Control
Events Documentation
Closing a Form
ListBox Control
New Features in C#
dynamic Type
dynamic versus object
Behavior of object
Behavior of dynamic
Named Arguments
Optional Arguments
Using Optional Arguments
Automating Office with C# 4.0
Automating Excel
Automating Word
Variance in Generic Interfaces
Variance with IComparer
Interfaces with Variance Support