C Sharp (programming language)
C# (pronounced see-sharp) is an object-oriented programming language developed by Microsoft as part of their .NET initiative. Microsoft based C# on C++ and the Java programming language. C# was designed to balance power (the C++ influence) with rapid development (the Visual BASIC and Java influences).
.
Program execution
C# does not compile to binary code which can be executed directly by the target computer. Instead, it is compiled to an intermediate representation. This form consists of metadata and instructions based upon a stack-based virtual machine. All .NET languages (which includes Visual Basic .NET and Managed C++ as well as C#) compile to this intermediary code called Microsoft Intermediate Language (MSIL). To the casual observer, the resulting program looks like a normal executable and has an ".exe" extension just like a normal application. However, executing the program fails on a computer that does not have the .NET Framework installed.
When the program is executed, the .NET framework compiles the intermediate code into binary code as it is run—just-in-time compilation (JIT). The resulting binary code is stored temporarily (in a memory cache), so if the program uses that portion of code again, the cached version is used. However this is only in effect during the runtime of the program. If a .NET application is run again, this compilation process is done again.
Standardization
Microsoft has submitted C# to the ECMA for formal standardization. In December 2001, ECMA released ECMA-334 C# Language Specification. C# became an ISO standard in 2003 (ISO/IEC 23270). There are independent implementations being worked on, including:
- Ximian's open source .NET implementation, Mono
- the Free Software Foundation's dotGNU Portable.NET
More recently, Microsoft has announced plans to add support for generics (similar to C++ templates), partial types and some other new features. Those additions were already proposed for ECMA/ISO standardization.
Example
using System;
namespace Example { public sealed class HelloWorld { string myString;
public string Value { get { return myString; } set { if(value == null) throw new ArgumentNullException(); else myString = value; } }
public HelloWorld() { myString = "Hello, world!"; }
public override String ToString() { return myString; }
public static void Main() { HelloWorld myHelloWorld = new HelloWorld(); Console.WriteLine(myHelloWorld.ToString()); Console.WriteLine(myHelloWorld.Value); Console.WriteLine(myHelloWorld); myHelloWorld.Value = "Blah."; Console.WriteLine(myHelloWorld.ToString()); Console.WriteLine(myHelloWorld.Value); Console.WriteLine(myHelloWorld); } //Output is: //Hello, world! //Hello, world! //Hello, world! //Blah. //Blah. //Blah. } }
Marketing
Microsoft is aggressively marketing C# as well as the other .NET languages. For example, purchasers of the latest version of Visual Studio .NET (Microsoft's popular IDE) can immediately develop mobile device applications in C#. To develop mobile device applications in other languages, such as C++ (which Visual Studio supports), developers have to download a separate IDE which does not integrate with Visual Studio. With these barriers, Microsoft is motivating developers to abandon C++ and switch to C#.
See also: F sharp programming language, Nemerle programming language
External links
- C# Language Specification (MSDN)
- ECMA-334 C# Language Specification (.pdf)
- ISO/IEC 23270:2003 C# Language Specification
- Microsoft Visual C# .NET
- MCS: The Ximian C# compiler
- Portable.NET
- DotGNU Project - a Free Software .NET compatible platform
- Borland USA's C# Builder for the Microsoft® .NET Framework
- C# tutorial including MSIL by Aleksey Nudelman
- Open Source C# IDE