<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/docgen.php"?>

<document version="0.1">
	<name>Introduction to C#</name>
	<category>Knowledge Base</category>
	<author>
		<name>Anchit Choudhry</name>
		<email>anchitusa@gmail.com</email>
	</author>
	<date>11 Aug 2009</date>
	<tags>
		<tag>C#</tag>
		<tag>.NET</tag>
		<tag>Tutorial Series</tag>
	</tags>
	
	<intro>
		C# is relatively new language that was unveiled to the world when Microsoft announced the first version of the .NET Framework in way back July 2000.The ease of learning, combined with the capabilities if the .NET Framework makes C# an excellent way to start your programming career.
	</intro>
	
	<para>
		<heading level='1'>What's .NET Framework?</heading>
		<text>
The .NET Framework is a new platform created by Microsoft for developing applications. Although the Microsoft release of the .NET Framework runs on the Windows Operating System, it is fast becoming possible to find alternative versions that will work on other operating systems. One example of this is: </text><link href="http://www.mono-project.com/">Mono</link><text> an open-source version of the .NET Framework that runs on several operating systems.
		</text>
		<endl/>
		<text>
   The .NET Framework consists primarily of a gigantic library codes that you use from your client languages as C# in this case. The .NET Framework also includes the .NET Common Language Runtime (CLR), whose task is to manage the execution of application developed using .NET Framework library. For C# code to execute, it must be converted into a language that the target operating system understands, known as native code. This conversion is called compiling code, which is performed by a compiler. </text>
		<endl/>
	</para>
	<para>
		<heading level='1'>MSIL and JIT</heading>
		<text>
When you compile code that uses the .NET Framework library, you don’t immediately create operating system – specific native code. Instead, you compile your code into Microsoft Intermediate Language (MSIL) code. It is the job of a Just - in - Time (JIT) compiler, which compiles MSIL into native code that is specific to the OS and machine architecture being targeted. Only at this point can the OS execute the application.
		</text>
	</para>
	<para>
		<heading level='1'>Assemblies</heading>
		<text>
When you compile an application, the MSIL code created is stored in an assembly. Assemblies include both executable files (.exe) as well as library files (.dll). It is often useful to place the reusable code in a place accessible to all applications. In the .NET Framework, this is called the Global Assembly Cache (GAC).
		</text>
	</para>
	<para>
		<heading level='1'>Managed Code</heading>	
		<text>
Code written using the .NET Framework is managed when it is executed. The CLR looks after your applications by managing memory, handling security, allowing cross - language debugging, and so on. By contrast, applications that do not run under the control of the CLR are said to be unmanaged. Also .NET Framework also supports Garbage Collection concept.</text>
	</para>
	<para>
		<heading level='1'>Introducing C#</heading>
		<text>
It is an evolution of the C and C++ languages and has been created by Microsoft specifically to work with the .NET platform. C# is just one of the languages available for .NET development, but it is certainly the best.
It has the advantage of being the only language designed from the ground up for the .NET Framework. Using C#, we can develop Windows applications, Web application (by creating ASP.NET applications) and provide Web Services as well. Also some form of database access is supported, which can be achieved using the ADO.NET (Active Data Objects .NET) section of the .NET Framework or through the new LINQ (Language Integrated Query) capabilities of C#.
		</text>
		<endl/>
		<text>
In the coming tutorials, we are going to first learn about the basic syntax and its usage in the C# language. Later we move on to the more advanced topics which involves object-oriented programming (OOP) and later Windows Forms Programming. 
		</text>
		<endl/>
		<text>
Programmers of C/C++, JAVA, and who are already well-versed with other Visual Studio languages such as Visual Basic, etc. would find themselves easy to learn and adapt to the syntax of C#. Visual Basic programmers could directly move on to the more advanced concepts if they like to skip the basic concepts.
		</text>
	</para>
	</document>