C Sharp Programming



C# (pronounced "C Sharp"||"C#") is a multi-purpose computer programming language suitable for a wide variety of development needs. This Wikibook introduces C# language fundamentals and covers a variety of the base class libraries (BCL) provided by the Microsoft .NET Framework.

Introduction

 * ''Main introduction: C Sharp Programming/Foreword

Although C# is derived from the C programming language, it introduces some unique and powerful features, such as delegates (which can be viewed as type-safe function pointers) and lambda expressions which introduce elements of functional programming languages, as well as a simpler single class inheritance model (than C++) and, for those of you with experience in "C-like" languages, a very familiar syntax that may help beginners become proficient faster than its predecessors. Similar to Java, it is object-oriented, comes with an extensive class library, and supports exception handling, multiple types of polymorphism, and separation of interfaces from implementations. Those features, combined with its powerful development tools, multi-platform support, and generics, make C# a good choice for many types of software development projects: rapid application development projects, projects implemented by individuals or large or small teams, Internet applications, and projects with strict reliability requirements. Testing frameworks such as NUnit make C# amenable to test-driven development and thus a good language for use with Extreme Programming (XP). Its strong typing helps to prevent many programming errors that are common in weakly typed languages.


 * /Foreword/ : A description of the C# language and introduction to this Wikibook.
 * Getting started with C# : A simple C# program and where to get tools to compile it.

Basics

 * Basic syntax : Describes the basics in how the applications you write will be interpreted.
 * Naming conventions : Quickly describes the generally accepted naming conventions for C#.
 * /Variables/ : The entities used to store data of various shapes.
 * /Operators/ : Summarizes the operators, such as the '+' in addition, available in C#.
 * /Data structures/ : Enumerations, structs, and more.
 * Control statements : Loops, conditions, and more. How the program flow is controlled.
 * /Exceptions/ : Responding to errors that can occur.

Classes

 * /Namespaces/ : Giving your code its own space to live in.
 * /Classes/ : The blueprints of objects that describes how they should work.
 * /Objects/ : Cornerstones of any object-oriented programming language, objects are the tools you use to perform work.
 * Encapsulation and accessor levels : Explains protection of object states by encapsulation, or the bundling of an object's data and functionality.

Advanced Topics

 * /Inheritance/:Re-using existing code to improve or specialize the functionality of an object.
 * /Interfaces/:Define a template, on which to base sub-classes.
 * /Delegates and Events/:Learn about delegates, anonymous delegates, lambda expressions, and events.
 * /Abstract classes/:Build partially implemented classes.
 * /Partial classes/:Split a class over several files to allow multiple users to develop, but also to stop code generators interfering with source code.
 * /Generics/:Allow commonly used collections and classes to appear to have specialization for your custom class.
 * /Extension methods/:Extend the functionality of existing types.
 * /Object Lifetime/:Learn about the lifetime of objects, where they are allocated and learn about garbage collection.
 * /Design Patterns/:Learn commonly used design methodologies to simplify and/or improve your development framework.

The .NET Framework

 * .NET Framework Overview : An overview of the .NET class library used in C#.
 * Console Programming : Input and Output using the console.
 * Windows Forms : GUI Programming with Windows Forms.
 * Collections : Effectively manage (add, remove, find, iterate, etc.) large sets of data.
 * Threading : Learn how to run code concurrently and how to synchronize code.
 * Marshalling : Communicating with unmanaged code

Examples

 * /K-Means++/