Introduction to C#.NET

  • Object Oriented Programming
  • C#: The OOP Language
  • The NET Framework
  • CLR, MSIL, JIT and Managed Code
  • Metadata, Assemblies, The Manifest and Garbage Collection
  • Putting Things Together
  • A First Look at the C# Code
  • The C# Code
  • The IL Code
  • Using the Library File
  • How to Get a Free C# Compiler
  • Compiling Programs in the Command Line Environment
  • Comparison of C# and C++
  • Features of C#

Building the Program Logic

  • UsingConditions
  • RelationalOperators
  • LogicalOperators
  • TheBitwiseOperators
  • The ifelseConstruct
  • ManipulatingCharacters
  • The switchConstruct
  • TheConditionalExpression
  • UsingLibraries
  • Repetition Loops
  • Nesting Loops
  • Branching Statements
  • Arrays
  • Multi Dimensional Arrays
  • Jagged Arrays
  • Using Program Arguments
  • Using .NET Properties and Methods with Arrays
  • The for each Loop

C# Programming

  • The “Hello,World!”C#Program
  • Compiling and Running the Program
  • Comments
  • Class Declaration
  • The Main Method
  • Using the NET Methods for Displaying Results
  • Using Directives
  • Using Local Variables
  • TheProgramArchitecture
  • Qualifying Names
  • Common Conventions for Writing Code
  • Code Documentation

C# Data Types

  • Data Types
  • Builtin Data Types
  • ValueTypes
  • Variable Initialization
  • DefaultValues
  • ReferenceTypes
  • TheC#ReferenceTypes
  • Boxing and Unboxing
  • SimpleDataTypes
  • Creating and Manipulating Arithmetic Expressions
  • The Basic Arithmetic Operators (+,–,*, /)
  • The Modulus Operator (%)
  • The Assignment Operators
  • Increment and Decrement Operators (++,––)
  • Operator Associativity
  • HowtoGet theTypeName
  • Evaluating Expressions with Mixed Types
  • Adding a Suffixto Numeric Data
  • Real Types
  • Integral Types
  • Conversion between Types
  • The charType
  • Formatting Results (Currency, Decimal, Fixedpoint, Numeric, Scientific, Hexadecimal, NullableTypes
  • Using the ??Operator
  • The string Type
  • StringExpressions
  • String Operators
  • The@Symbol
  • Reading the Keyboard Input
  • Class using the parse Method


  • ClassDeclaration
  • Class Instantiation
  • Namespaces
  • Nesting Namespaces
  • The Namespace Alias Qualifier
  • Access Levels
  • Properties and UsingProperties
  • ReadonlyProperties
  • Accessor Accessibility
  • StaticMembers and StaticClasses
  • Constants, Constructors, DeclaringConstructors, PrivateConstructors, StaticConstructors
  • Destructors, PartialClasses


  • FunctionMembers
  • Polymorphism
  • Virtual and Override Methods
  • Calling Members of the Base Class
  • Method Overloading and Overriding Virtual Methods on the Base Class
  • Abstract Classes and Methods
  • Indexers
  • Structs, Enums and Attributes
  • Structs vs Classes
  • Passing Structs and Classes to Methods
  • Attributes
  • Calling Native Functions
  • Emulating Unions


  • What Are Generics?
  • Using Generic Collections
  • CreatingYourOwnGenericClasses
  • Generic Methods
  • Generic Methods inside Generic Classes
  • Overloading Generic Methods
  • GenericDelegates
  • Generic Interfaces
  • Limitations of Using Generics
  • ICollection, ICollectionMembers, IDictionary, IDictionary Members
  • Creating Your Own Generic Classes
  • Generic Methods, Generic Methods inside Generic Classes, Overloading Generic Methods
  • GenericDelegates, Generic Interfaces, BenefitsofUsingGenerics, LimitationsofUsingGenerics


  • What Is an Interface
  • Declaring an Interface
  • Interface Implementation
  • Explicit Interface Implementation
  • Hiding Members of the Base Class, Versioning, Hiding Interface Members


  • Errors and Exceptions
  • Throwing an Exception, Catching an Exception, Organizing the Handlers, Sequence of Events in Handling Exceptions, Expected Exceptions in File Processing
  • Reading Text Files, Writing and Appending Text Files
  • The finally Block, The try finally Statement, The try catch finally Statement, User defined Exceptions, Using the Stack Trace Property

Delegatesand Events

  • What Is aDelegate?, DeclaringDelegates, CreatingaDelegate, Invoking the Delegate, Associating a Delegate with More Than One Method
  • Adding and Removing Delegates, Using NET Methods to Add and Remove Delegates, Anonymous Methods, OuterVariables, Restrictions on Using Anonymous Methods
  • Covariance, Contravariance, Events, Using Events in Applications

Collections and Iterators

  • Collections Classes, The Stack Collection, Stack Members, The Queue Collection,Queue Members
  • The ArrayList Collection, ArrayList Members, The Sorted List Collection, Sorted List Members
  • The Hash table Collection, Hash table Members, Specialized Collections
  • The List Dictionary Collection, List Dictionary Members
  • The Linked List Collection
  • Using Enumerators, Iterators, The Iterator Blocks, The yield Statement

Assemblies and Versioning

  • PE Files, Metadata, Security Boundary, Versioning, Manifests
  • MultiModule Assemblies, Private Assemblies, Shared Assemblies, Public Key Encryption

Attributes and Reflection

  • Attributes, Intrinsic Attributes, Custom Attributes, Reflection, Reflection Emit
  • Marshaling and Remoting, Application Domains, Context

Threads and Synchronization

  • Threads
  • Synchronization
  • Race Conditions and Deadlocks


  • Files and Directories
  • Reading and Writing Data
  • Asynchronous I/O
  • Network I/O
  • Web Streams
  • Serialization
  • Isolated Storage