tenuate cheap valium free polyphonic ringtones lipitor online free ringtones cheap phentermine sagem ringtones free ringtones ultracet online ortho online buy vigrx nexium online meridia online sharp ringtones free music ringtones cheap diazepam carisoprodol online but wellbutrin meridia online free free ringtones xanax online free mtv ringtones fioricet online mp3 ringtones nextel ringtones cheap adipex cheap xanax sagem ringtones diazepam online clonazepam online free polyphonic ringtones carisoprodol online buy wellbutrin kyocera ringtones ativan online cheap viagra lorazepam online cheap ultram free kyocera ringtones alprazolam online free alltel ringtones ambien online cheap vicodin motorola ringtones free sony ericsson ringtones free punk ringtones buy viagra but phentermine xanax online buy ultram valium online free cingular ringtones adipex online cyclobenzaprine online propecia online cheap tenuate cheap carisoprodol cheap ultracet cheap pharmacy online wwe ringtones cheap diazepam cheap xenical nokia ringtones qwest ringtones zanaflex online diazepam online verizon ringtones free motorola ringtones cheap lortab buy prozac ericsson ringtones but ortho cyclobenzaprine online cheap celexa free ringtones online phentermine cool ringtones cheap prozac qwest ringtones cialis online sprint ringtones nexium online free real ringtones sagem ringtones tracfone ringtones nokia ringtones free punk ringtones free mp3 ringtones sony ringtones buy ativan but hgh midi ringtones alltel ringtones cheap flexeril sony ericsson ringtones free motorola ringtones vicodin online free tracfone ringtones soma online levitra online free motorola ringtones cheap didrex sildenafil online cheap pharmacy online zoloft online hydrocodone online free sony ringtones free cingular ringtones viagra online buy paxil ambien online lortab online cheap hydrocodone vigrx online cheap ativan buy hgh sildenafil online buy viagra ortho online nextel ringtones online lisinopril free funny ringtones sony ericsson ringtones buy vicodin but hydrocodone ativan online free mono ringtones online clonazepam levitra online sprint ringtones cialis online sony ringtones levitra online zanaflex online but phentermine cheap celexa ultracet online wwe ringtones free sharp ringtones norco online soma cheap ultracet free cingular ringtones adipex online xenical online cheap albuterol cheap tenuate ortho online music ringtones free sagem ringtones lisinopril online cheap meridia cheap propecia vigrx online cheap diethylpropion cheap albuterol free mp3 ringtones cheap meridia free ringtones cheap ultram soma online lortab online sildenafil online free nextel ringtones cheap lorazepam free funny ringtones diethylpropion online free ringtones free funny ringtones free cingular ringtones soma online free nokia ringtones cheap clonazepam cheap zyban clomid online prozac online valium online lisinopril online meridia online tramadol online sharp ringtones free midi ringtones cheap flexeril free real ringtones cheap celexa zoloft online free nextel ringtones ericsson ringtones music ringtones free mtv ringtones ultram online buy valium viagra online order lorazepam cialis online cheap phentermine buy nexium free samsung ringtones norco online cheap meridia == Background ==
C# is an object-oriented programming language developed by Microsoft as part of their .NET initiative. Microsoft based C# on C and Java. C# was designed as a language that would provide a balance of C with rapid development, Visual Basic, Delphi, and Java.
C# is, in some sense, the programming language which most directly reflects the underlying .NET Framework on which all .NET programs run, and it depends strongly on this framework; there is no such thing as an unmanaged C# program. Its primitive datatypes are objects of the corresponding .NET types, it is garbage-collected, and many of its abstractions, such as its classes, interfaces, delegates, exceptions, and so on, expose explicit features of the .NET runtime.
Compared to C and C , the language is restricted or enhanced in a number of ways, including but not limited to the following:
- C# is tied to the Windows platform (end user must have .Net framework installed). Unofficial support for Linux is provided in the shape of Mono
- The Managed DirectX classes were designed for use in C# and make using DX easy.
- Raw pointers and unchecked arithmetic can only be used in a special unsafe mode. Most object access is done through safe references, which cannot be made invalid, and most arithmetic is checked for overflow.
- Objects cannot be explicitly freed, but instead are garbage collected when no more references to them exist.
- As in Java, only single inheritance is available, but a class can implement any number of abstract interfaces. This functions mainly to simplify the runtime's implementation.
- C# is more typesafe than C . The only implicit conversions by default are safe conversions, such as widening of integers and conversion from a derived type to a base type. There are no implicit conversions between booleans and integers, between enumeration members and integers, no void pointers (although references to Object are similar), and any user-defined implicit conversion must be explicitly marked as such, unlike C 's copy constructors.
- Syntax for array declaration is different ("int a = new int" instead of "int a").
- C# has no templates, but C# 2.0 has generics, and these support some features not supported by C templates such as type constraints on generic parameters. On the other hand, expressions cannot be used as generic parameters as in C templates.
- Full reflection is available.
Although C# is often considered similar to Java, there are also a number of notable differences with this language as well, including the following:
- Java does not have operator overloading.
- Java does not have an unsafe mode permitting native pointer manipulation and unchecked arithmetic.
- Java has checked exceptions, while C# exceptions are unchecked, as in C .
- C# has a goto control flow construct not found in Java.
- Java uses Javadoc-syntax comments to automatically generate documentation from source files. C# uses XML-based comments for this purpose.
- C# supports checked arithmetic.
- C# supports indexers.
- C# greatly simplifies event-driven programming through language constructs like events and delegates.
- C# supports structures in addition to classes. Structures, known in the .NET Framework as value types, are comparable to C structures, in that they need not be heap-allocated and can limit the number of dereferences needed to access data; see value type.
- C# has a unified object model for value-types and objects (There is no difference between "int" and "System.Int32").
C# is a ECMA and ISO standardized language. There are currently a number of C# implementations. More information can be found here.
C# has only been used for a few roguelikes so far: