Sie sind auf Seite 1von 17

Dear Wikipedia readers: We are the small non-profit that runs the #5 website in the world.

We have only 150 staff but serve 450 million users, and have costs li ke any other top site: servers, power, rent, programs, and staff. Wikipedia is s omething special. It is like a library or a public park, a place we can all go t o think and learn. To protect our independence, we'll never run ads. We take no government funds. We run on donations averaging about R$60. If everyone reading this gave R$10, our fundraiser would be done within an hour. If Wikipedia is use ful to you, take one minute to keep it online another year. Please help us forge t fundraising and get back to Wikipedia. Thank you. Please Help C Sharp (programming language)From Wikipedia, the free encyclopediaJump to: na vigation, search This article is about a programming language. For other uses, s ee C-sharp (disambiguation). The correct title of this article is C# (programming language). The substitution or omission of the # sign is because of technical restrictions. C# Paradigm(s) multi-paradigm: structured, imperative, object-oriented, event-drive n, functional, generic, reflective, concurrent Appeared in 2000 Designed by Microsoft Developer Microsoft Stable release 5.0 (August 15, 2012; 6 months ago (2012-08-15)) Typing discipline static, dynamic,[1] strong, safe, nominative, partially inferr ed Major implementations Visual C#, .NET Framework, Mono, DotGNU Dialects C?, Spec#, Polyphonic C# Influenced by C++,[2] Eiffel, Java,[3] Modula-3, Object Pascal[4] Influenced D, F#, Java,[5] Nemerle, Vala Platform Common Language Infrastructure License CLR is proprietary, Mono compiler is dual GPLv3, MIT/X11 and libraries a re LGPLv2, DotGNU is dual GPL and LGPLv2 Usual filename extensions .cs C Sharp Programming at Wikibooks C#[note 1] (pronounced see sharp) is a multi-paradigm programming language encom passing strong typing, imperative, declarative, functional, generic, object-orie nted (class-based), and component-oriented programming disciplines. It was devel oped by Microsoft within its .NET initiative and later approved as a standard by Ecma (ECMA-334) and ISO (ISO/IEC 23270:2006). C# is one of the programming lang uages designed for the Common Language Infrastructure. C# is intended to be a simple, modern, general-purpose, object-oriented programm ing language.[6] Its development team is led by Anders Hejlsberg. The most recen t version is C# 5.0, which was released on August 15, 2012. Contents [hide] 1 Design goals 2 Name 3 History 3.1 Versions 4 Syntax 4.1 Distinguishing features 5 Common type system 5.1 Categories of data types 5.2 Boxing and unboxing 5.3 Generics 6 Preprocessor 7 Code comments 8 XML documentation system 9 Libraries

10 11 12 13 14 15 16 17

"Hello world" example Standardization and licensing Implementations See also Notes References Further reading External links

[edit] Design goalsThe ECMA standard lists these design goals for C#:[6] The C# language is intended to be a simple, modern, general-purpose, object-orie nted programming language. The language, and implementations thereof, should provide support for software e ngineering principles such as strong type checking, array bounds checking, detec tion of attempts to use uninitialized variables, and automatic garbage collectio n. Software robustness, durability, and programmer productivity are important. The language is intended for use in developing software components suitable for deployment in distributed environments. Source code portability is very important, as is programmer portability, especia lly for those programmers already familiar with C and C++. Support for internationalization is very important. C# is intended to be suitable for writing applications for both hosted and embed ded systems, ranging from the very large that use sophisticated operating system s, down to the very small having dedicated functions. Although C# applications are intended to be economical with regard to memory and processing power requirements, the language was not intended to compete directl y on performance and size with C or assembly language. [edit] Name C-sharp musical note (left)The name "C sharp" was inspired by musical notation w here a sharp indicates that the written note should be made a semitone higher in pitch.[7] This is similar to the language name of C++, where "++" indicates tha t a variable should be incremented by 1. Due to technical limitations of display (standard fonts, browsers, etc.) and the fact that the sharp symbol (U+266F ? music sharp sign (HTML: ♯)) is not p resent on the standard keyboard, the number sign (U+0023 # number sign (HTML: &# 35;)) was chosen to represent the sharp symbol in the written name of the progra mming language.[8] This convention is reflected in the ECMA-334 C# Language Spec ification.[6] However, when it is practical to do so (for example, in advertisin g or in box art[9]), Microsoft uses the intended musical symbol. The "sharp" suffix has been used by a number of other .NET languages that are va riants of existing languages, including J# (a .NET language also designed by Mic rosoft that is derived from Java 1.1), A# (from Ada), and the functional program ming language F#.[10] The original implementation of Eiffel for .NET was called Eiffel#,[11] a name retired since the full Eiffel language is now supported. The suffix has also been used for libraries, such as Gtk# (a .NET wrapper for GTK+ and other GNOME libraries), Cocoa# (a wrapper for Cocoa). [edit] HistoryDuring the development of the .NET Framework, the class libraries were originally written using a managed code compiler system called Simple Manag ed C (SMC).[12][13][14] In January 1999, Anders Hejlsberg formed a team to build a new language at the time called Cool, which stood for "C-like Object Oriented Language".[15] Microsoft had considered keeping the name "Cool" as the final na me of the language, but chose not to do so for trademark reasons. By the time th e .NET project was publicly announced at the July 2000 Professional Developers C onference, the language had been renamed C#, and the class libraries and ASP.NET runtime had been ported to C#.

C#'s principal designer and lead architect at Microsoft is Anders Hejlsberg, who was previously involved with the design of Turbo Pascal, Embarcadero Delphi (fo rmerly CodeGear Delphi, Inprise Delphi and Borland Delphi), and Visual J++. In i nterviews and technical papers he has stated that flaws[citation needed] in most major programming languages (e.g. C++, Java, Delphi, and Smalltalk) drove the f undamentals of the Common Language Runtime (CLR), which, in turn, drove the desi gn of the C# language itself. James Gosling, who created the Java programming language in 1994, and Bill Joy, a co-founder of Sun Microsystems, the originator of Java, called C# an "imitatio n" of Java; Gosling further claimed that "[C# is] sort of Java with reliability, productivity and security deleted."[3][16] Klaus Kreft and Angelika Langer (aut hors of a C++ streams book) stated in a blog post that "Java and C# are almost i dentical programming languages. Boring repetition that lacks innovation," "Hardl y anybody will claim that Java or C# are revolutionary programming languages tha t changed the way we write programs," and "C# borrowed a lot from Java - and vic e versa. Now that C# supports boxing and unboxing, we'll have a very similar fea ture in Java."[17] Anders Hejlsberg has argued that C# is "not a Java clone" and is "much closer to C++" in its design.[18] Since the release of C# 2.0 in November 2005, the C# and Java languages have evo lved on increasingly divergent trajectories, becoming somewhat less similar. One of the first major departures came with the addition of generics to both langua ges, with vastly different implementations. C# makes use of reification to provi de "first-class" generic objects that can be used like any other class, with cod e generation performed at class-load time.[19] By contrast, Java's generics are essentially a language syntax feature, and they do not affect the generated byte code, because the compiler performs type erasure on the generic type informatio n after it has verified its correctness.[20] Furthermore, C# has added several major features to accommodate functional-style programming, culminating in the LINQ extensions released with C# 3.0 and its su pporting framework of lambda expressions, extension methods, and anonymous types .[21] These features enable C# programmers to use functional programming techniq ues, such as closures, when it is advantageous to their application. The LINQ ex tensions and the functional imports help developers reduce the amount of "boiler plate" code that is included in common tasks like querying a database, parsing a n xml file, or searching through a data structure, shifting the emphasis onto th e actual program logic to help improve readability and maintainability.[22] C# used to have a mascot called Andy (named after Anders Hejlsberg). It was reti red on Jan 29, 2004.[23] C# was originally submitted for review to the ISO subcommittee JTC 1/SC 22[24] u nder ISO/IEC 23270:2003,[25] which is now withdrawn. It was then approved under ISO/IEC 23270:2006.[26] [edit] VersionsIn the course of its development, the C# language has gone throug h several versions: Version Language specification Date .NET Framework Visual Studio ECMA ISO/IEC Microsoft C# 1.0 December 2002 April 2003 January 2002 January 2002 .NET Framework 1.0 Vis ual Studio .NET 2002 C# 1.2 October 2003 April 2003 .NET Framework 1.1 Visual Studio .NET 2003 C# 2.0 June 2006 September 2006 September 2005[A] November 2005 .NET Framework 2 .0 Visual Studio 2005 C# 3.0 None[B] August 2007 November 2007 .NET Framework 2.0 (Except LINQ/Query E xtensions) [27]

.NET Framework 3.0 (Except LINQ/Query Extensions) [27] .NET Framework 3.5 Visual Studio 2008 Visual Studio 2010 C# 4.0 April 2010 April 2010 .NET Framework 4 Visual Studio 2010 C# 5.0 2012[C] August 2012 .NET Framework 4.5 Visual Studio 2012 A The Microsoft C# 2.0 specification document only contains the new 2.0 features . For older features use the 1.2 specification above. B No ECMA or ISO/IEC specifications exist for C# 3.0, 4.0 or 5.0. C The Microsoft C# 5.0 is bundled with installation of Visual Studio 2012, but i s not available online. Summary of versions C# 2.0 C# 3.0 C# 4.0 C# 5.0 [28] Future Features added Generics Partial types Anonymous methods Iterators Nullable types Private setters (properties) Method group conversions (delegates) Implicitly typed local variables Object and collection initializers Auto-Implemented properties Anonymous types Extension methods Query expressions Lambda expressions Expression trees Partial Methods Dynamic binding Named and optional arguments Generic co- and contravariance Embedded interop types ("NoPIA") Asynchronous methods Caller info attributes Compiler-as-a-service ("Roslyn") Community technology preview as of September 2012 [edit] SyntaxMain article: C Sharp syntax See also: Syntax (programming languages) C# has the following syntax: Semicolons are used to denote the end of a statement. Curly braces are used to group statements. Statements are commonly grouped into methods (functions), methods into classes, and classes into namespaces. Variables are assigned using an equals sign, but compared using two consecutive equals signs. Square brackets are used with arrays, both to declare them and to get a value at a given index in one of them. [edit] Distinguishing featuresNote: The following description is based on the la nguage standard and other documents listed in the "External links" section. By design, C# is the programming language that most directly reflects the underl ying Common Language Infrastructure (CLI).[citation needed] Most of its intrinsi c types correspond to value-types implemented by the CLI framework. However, the language specification does not state the code generation requirements of the c ompiler: that is, it does not state that a C# compiler must target a Common Lang uage Runtime, or generate Common Intermediate Language (CIL), or generate any ot her specific format. Theoretically, a C# compiler could generate machine code li ke traditional compilers of C++ or Fortran. Some notable features of C# that dis

tinguish it from C and C++ (and Java, where noted) are: C# supports strongly typed implicit variable declarations with the keyword var, and implicitly typed arrays with the keyword new[] followed by a collection init ializer. Meta programming via C# attributes is part of the language. Many of these attrib utes duplicate the functionality of GCC's and VisualC++'s platform-dependent pre processor directives. Like C++, and unlike Java, C# programmers must use the keyword virtual to allow methods to be overridden by subclasses. Extension methods in C# allow programmers to use static methods as if they were methods from a class's method table, allowing programmers to add methods to an o bject that they feel should exist on that object and its derivatives. The type dynamic allows for run-time method binding, allowing for JavaScript lik e method calls and run-time object composition. C# has strongly typed and verbose function pointer support via the keyword deleg ate. Like the QT framework's pseudo-C++ signal and slot, C# has semantics specificall y surrounding publish-subscribe style events, though C# uses delegates to do so. C# offers Java like syncronized method calls, via the attribute [MethodImpl(Meth odImplOptions.Synchronized), and has support for mutually-exclusive locks via th e keyword lock. The C# languages does not allow for global variables or functions. All methods a nd members must be declared within classes. Static members of public classes can substitute for global variables and functions. Local variables cannot shadow variables of the enclosing block, unlike C and C++ . A C# namespace provides the same level of code isolation as a Java package or a C++ namespace, with very similar rules and features to a package. C# supports a strict Boolean data type, bool. Statements that take conditions, s uch as while and if, require an expression of a type that implements the true op erator, such as the boolean type. While C++ also has a boolean type, it can be f reely converted to and from integers, and expressions such as if(a) require only that a is convertible to bool, allowing a to be an int, or a pointer. C# disall ows this "integer meaning true or false" approach, on the grounds that forcing p rogrammers to use expressions that return exactly bool can prevent certain types of common programming mistakes in C or C++ such as if (a = b) (use of assignmen t = instead of equality ==). In C#, memory address pointers can only be used within blocks specifically marke d as unsafe, and programs with unsafe code need appropriate permissions to run. Most object access is done through safe object references, which always either p oint to a "live" object or have the well-defined null value; it is impossible to obtain a reference to a "dead" object (one that has been garbage collected), or to a random block of memory. An unsafe pointer can point to an instance of a va lue-type, array, string, or a block of memory allocated on a stack. Code that is not marked as unsafe can still store and manipulate pointers through the System .IntPtr type, but it cannot dereference them. Managed memory cannot be explicitly freed; instead, it is automatically garbage collected. Garbage collection addresses the problem of memory leaks by freeing t he programmer of responsibility for releasing memory that is no longer needed. In addition to the try...catch construct to handle exceptions, C# has a try...fi nally construct to guarantee execution of the code in the finally block, whether an exception occurs or not. Multiple inheritance is not supported, although a class can implement any number of interfaces. This was a design decision by the language's lead architect to a void complication and simplify architectural requirements throughout CLI. When i mplementing multiple interfaces that contain a method with the same signature, C # allows the programmer to implement each method depending on which interface th at method is being called through, or, like Java, allows the programmer to imple ment the method once and have that be the single invocation on a call through an

y of the classes interfaces. C#, unlike Java, supports operator overloading. Only the most commonly overloade d operators in C++ may be overloaded in C#. C# is more type safe than C++. The only implicit conversions by default are thos e that are considered safe, such as widening of integers. This is enforced at co mpile-time, during JIT, and, in some cases, at runtime. No implicit conversions occur between booleans and integers, nor between enumeration members and integer s (except for literal 0, which can be implicitly converted to any enumerated typ e). Any user-defined conversion must be explicitly marked as explicit or implici t, unlike C++ copy constructors and conversion operators, which are both implici t by default. C# has explicit support for covariance and contravariance, unlike Java which has neither, and unlike C++ which has some degree of support for contravariance sim ply through the semantics of return types on virtual methods. Enumeration members are placed in their own scope. C# provides properties as syntactic sugar for a common pattern in which a pair o f methods, accessor (getter) and mutator (setter) encapsulate operations on a si ngle attribute of a class. No redundant method signatures for the getter/setter implementations need be written, and the property may be accessed using attribut e syntax rather than more verbose method calls. Checked exceptions are not present in C# (in contrast to Java). This has been a conscious decision based on the issues of scalability and versionability.[29] Though primarily an imperative language, since C# 3.0 it supports functional pro gramming techniques through first-class function objects and lambda expressions. [edit] Common type systemC# has a unified type system. This unified type system is called Common Type System (CTS).[30] A unified type system implies that all types, including primitives such as integ ers, are subclasses of the System.Object class. For example, every type inherits a ToString() method. [edit] Categories of data typesCTS separates data types into two categories:[30] 1.Value types 2.Reference types Instances of value types do not have referential identity nor referential compar ison semantics - equality and inequality comparisons for value types compare the actual data values within the instances, unless the corresponding operators are overloaded. Value types are derived from System.ValueType, always have a defaul t value, and can always be created and copied. Some other limitations on value t ypes are that they cannot derive from each other (but can implement interfaces) and cannot have an explicit default (parameterless) constructor. Examples of val ue types are all primitive types, such as int (a signed 32-bit integer), float ( a 32-bit IEEE floating-point number), char (a 16-bit Unicode code unit), and Sys tem.DateTime (identifies a specific point in time with nanosecond precision). Ot her examples are enum (enumerations) and struct (user defined structures). In contrast, reference types have the notion of referential identity - each inst ance of a reference type is inherently distinct from every other instance, even if the data within both instances is the same. This is reflected in default equa lity and inequality comparisons for reference types, which test for referential rather than structural equality, unless the corresponding operators are overload ed (such as the case for System.String). In general, it is not always possible t o create an instance of a reference type, nor to copy an existing instance, or p erform a value comparison on two existing instances, though specific reference t ypes can provide such services by exposing a public constructor or implementing a corresponding interface (such as ICloneable or IComparable). Examples of refer ence types are object (the ultimate base class for all other C# classes), System .String (a string of Unicode characters), and System.Array (a base class for all C# arrays).

Both type categories are extensible with user-defined types. [edit] Boxing and unboxingBoxing is the operation of converting a value-type obj ect into a value of a corresponding reference type.[30] Boxing in C# is implicit . Unboxing is the operation of converting a value of a reference type (previously boxed) into a value of a value type.[30] Unboxing in C# requires an explicit typ e cast. A boxed object of type T can only be unboxed to a T (or a nullable T).[3 1] Example: int foo = 42; // Value type. object bar = foo; // foo is boxed to bar. int foo2 = (int)bar; // Unboxed back to value type. [edit] GenericsGenerics were added to version 2.0 of the C# language. Generics u se type parameters, which make it possible to design classes and methods that do not specify the type used until the class or method is instantiated. The main a dvantage is that one can use generic type parameters to create classes and metho ds that can be used without incurring the cost of runtime casts or boxing operat ions, as shown here:[32] // Declare the generic class. public class GenericList<T> { void Add(T input) { } } class TestGenericList { private class ExampleClass { } static void Main() { // Declare a list of type int. GenericList<int> list1 = new GenericList<int>(); // Declare a list of type string. GenericList<string> list2 = new GenericList<string>(); // Declare a list of type ExampleClass. GenericList<ExampleClass> list3 = new GenericList<ExampleClass>(); } } [edit] PreprocessorC# features "preprocessor directives"[33] (though it does not have an actual preprocessor) based on the C preprocessor that allow programmers to define symbols, but not macros. Conditionals such as #if, #endif, and #else are also provided. Directives such as #region give hints to editors for code fol ding. public class Foo { #region Constructors public Foo() {} public Foo(int firstParam) {} #endregion #region Procedures

public void IntBar(int firstParam) {} public void StrBar(string firstParam) {} public void BoolBar(bool firstParam) {} #endregion } [edit] Code commentsC# utilizes a double slash (//) to indicate the rest of the line is a comment. This is inherited from C++. public class Foo { // a comment public static void Bar(int firstParam) {} // also a comment } Multi-line comments can start with slash-asterisk (/*) and end asterisk-slash (* /). This is inherited from standard C. public class Foo { /* A Multi-Line comment */ public static void Bar(int firstParam) {} } [edit] XML documentation systemC#'s documentation system is similar to Java's Ja vadoc, but based on XML. Two methods of documentation are currently supported by the C# compiler. Single-line documentation comments, such as those commonly found in Visual Studi o generated code, are indicated on a line beginning with ///. public class Foo { /// <summary>A summary of the method.</summary> /// <param name="firstParam">A description of the parameter.</param> /// <remarks>Remarks about the method.</remarks> public static void Bar(int firstParam) {} } Multi-line documentation comments, while defined in the version 1.0 language spe cification, were not supported until the .NET 1.1 release.[34] These comments st art with slash-asterisk-asterisk (/**) and end asterisk-slash (*/).[35] public class Foo { /** <summary>A summary of the method.</summary> * <param name="firstParam">A description of the parameter.</param> * <remarks>Remarks about the method.</remarks> */ public static void Bar(int firstParam) {} } Note there are some stringent criteria regarding white space and XML documentati on when using the slash/asterisk/asterisk (/**) technique. This code block: /** * <summary> * A summary of the method.</summary>*/ produces a different XML comment from this code block:[35] /** * <summary> A summary of the method.</summary>*/

Syntax for documentation comments and their XML markup is defined in a non-norma tive annex of the ECMA C# standard. The same standard also defines rules for pro cessing of such comments, and their transformation to a plain XML document with precise rules for mapping of CLI identifiers to their related documentation elem ents. This allows any C# IDE or other development tool to find documentation for any symbol in the code in a certain well-defined way. [edit] LibrariesThe C# specification details a minimum set of types and class li braries that the compiler expects to have available. In practice, C# is most oft en used with some implementation of the Common Language Infrastructure (CLI), wh ich is standardized as ECMA-335 Common Language Infrastructure (CLI). [edit] "Hello world" exampleThe following is a very simple C# program, a version of the classic "Hello world" example: using System; class Program { static void Main() { Console.WriteLine("Hello world!"); } } The effect is to write the following text to the output console: Hello world! Each line has a purpose: using System; The above line of code tells the compiler to use System as a candidate prefix fo r types used in the source code. In this case, when the compiler sees use of the Console type later in the source code, it tries to find a type named Console, f irst in the current assembly, followed by all referenced assemblies. In this cas e the compiler fails to find such a type, since the name of the type is actually System.Console. The compiler then attempts to find a type named System.Console by using the System prefix from the using statement, and this time it succeeds. The using statement allows the programmer to state all candidate prefixes to use during compilation instead of always using full type names. class Program Above is a class definition. Everything between the following pair of braces des cribes Program. static void Main() This declares the class member method where the program begins execution. The .N ET runtime calls the Main method. (Note: Main may also be called from elsewhere, like any other method, e.g. from another method of Program.) The static keyword makes the method accessible without an instance of Program. Each console applic ation's Main entry point must be declared static. Otherwise, the program would r equire an instance, but any instance would require a program. To avoid that irre solvable circular dependency, C# compilers processing console applications (like that above) report an error, if there is no static Main method. The void keywor d declares that Main has no return value. Console.WriteLine("Hello world!"); This line writes the output. Console is a static class in the System namespace. It provides an interface to the standard input, output, and error streams for co nsole applications. The program calls the Console method WriteLine, which displa ys on the console a line with the argument, the string "Hello world!".

A GUI example: using System.Windows.Forms; class Program { static void Main() { MessageBox.Show("Hello world!"); } } This example is similar to the previous example, except that it generates a dial og box that contains the message "Hello world!" instead of writing it to the con sole. [edit] Standardization and licensingIn August 2000, Microsoft Corporation, Hewle tt-Packard and Intel Corporation co-sponsored the submission of specifications f or C# as well as the Common Language Infrastructure (CLI) to the standards organ ization Ecma International. In December 2001, ECMA released ECMA-334 C# Language Specification. C# became an ISO standard in 2003 (ISO/IEC 23270:2003 - Informat ion technology Programming languages C#). ECMA had previously adopted equivalent specifications as the 2nd edition of C#, in December 2002. In June 2005, ECMA approved edition 3 of the C# specification, and updated ECMA334. Additions included partial classes, anonymous methods, nullable types, and generics (similar to C++ templates). In July 2005, ECMA submitted the standards and related TRs to ISO/IEC JTC 1 via the latter's Fast-Track process. This process usually takes 6 9 months. The C# language definition and the CLI are standardized under ISO and Ecma stand ards that provide reasonable and non-discriminatory licensing protection from pa tent claims. However, Microsoft uses C# and the CLI in its Base Class Library (B CL) that is the foundation of its proprietary .NET framework, and which provides a variety of non-standardized classes (extended I/O, GUI, Web services, etc.). Some cases where Microsoft patents apply to standards used in the .NET framework are documented by Microsoft and the applicable patents are available on either RAND terms or through Microsoft's Open Specification Promise that releases paten t rights to the public,[36] but there is some concern and debate as to whether t here are additional aspects patented by Microsoft that are not covered, which ma y deter independent implementations of the full framework. Microsoft has agreed not to sue open source developers for violating patents in non-profit projects for the part of the framework that is covered by the OSP.[37 ] Microsoft has also agreed not to enforce patents relating to Novell products a gainst Novell's paying customers[38] with the exception of a list of products th at do not explicitly mention C#, .NET or Novell's implementation of .NET (The Mo no Project).[39] However, Novell maintains that Mono does not infringe any Micro soft patents.[40] Microsoft has also made a specific agreement not to enforce pa tent rights related to the Moonlight browser plugin, which depends on Mono, prov ided it is obtained through Novell.[41] In a note posted on the Free Software Foundation's news website in June 2009, Ri chard Stallman warned that he believes that "Microsoft is probably planning to f orce all free C# implementations underground some day using software patents", a nd recommended that developers avoid taking what he described as the "gratuitous risk" associated with "depend[ing] on the free C# implementations".[42] The Fre e Software Foundation later reiterated its warnings,[43] claiming that the exten sion of Microsoft Community Promise to the C# and the CLI ECMA specifications[44

] would not prevent Microsoft from harming free implementations of C#, because m any specific Windows libraries included with .NET or Mono were not covered by th is promise. [edit] ImplementationsThe reference C# compiler is Microsoft Visual C#, which is closed-source. Other C# compilers exist, often including an implementation of the Common Langua ge Infrastructure and the .NET class libraries up to .NET 2.0: The Mono project provides an open source C# compiler, a complete open source imp lementation of the Common Language Infrastructure including the required framewo rk libraries as they appear in the ECMA specification, and a nearly complete imp lementation of the Microsoft proprietary .NET class libraries up to .NET 3.5. As of Mono 2.6, no plans exist to implement WPF; WF is planned for a later release ; and there are only partial implementations of LINQ to SQL and WCF.[45] The DotGNU project also provides an open source C# compiler, a nearly complete i mplementation of the Common Language Infrastructure including the required frame work libraries as they appear in the ECMA specification, and subset of some of t he remaining Microsoft proprietary .NET class libraries up to .NET 2.0 (those no t documented or included in the ECMA specification, but included in Microsoft's standard .NET Framework distribution). Microsoft's Rotor project (currently called Shared Source Common Language Infras tructure) (licensed for educational and research use only) provides a shared sou rce implementation of the CLR runtime and a C# compiler, and a subset of the req uired Common Language Infrastructure framework libraries in the ECMA specificati on (up to C# 2.0, and supported on Windows XP only). [edit] See also Computer programming portal C# topics C# syntax Comparison of C# and Java Implementations Microsoft Visual C# Oxygene Sing# IDEs Microsoft Visual Studio Microsoft Visual Studio Express (freeware) MonoDevelop Morfik SharpDevelop Turbo C Sharp [edit] Notes1.^ By convention, a hash sign is used for the second character in n ormal text; in artistic representations, sometimes a true sharp sign is used: C? . [edit] References1.^ Torgersen, Mads (October 27, 2008). "New features in C# 4.0 ". Microsoft. http://code.msdn.microsoft.com/csharpfuture/Release/ProjectRelease s.aspx?ReleaseId=1686. Retrieved October 28, 2008. 2.^ Naugler, David (May 2007). "C# 2.0 for C++ and Java programmer: conference w orkshop". Journal of Computing Sciences in Colleges 22 (5). "Although C# has bee n strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java." 3.^ a b Wylie Wong (2002). "Why Microsoft's C# isn't". CNET: CBS Interactive. ht tp://news.cnet.com/2008-1082-817522.html. Retrieved November 14, 2009. 4.^ Hamilton, Naomi (October 1, 2008). "The A-Z of Programming Languages: C#". C omputerworld. http://www.computerworld.com.au/article/261958/a-z_programming_lan guages_c_/?pp=7. Retrieved February 12, 2010. "We all stand on the shoulders of giants here and every language builds on what went before it so we owe a lot to

C, C++, Java, Delphi, all of these other things that came before us. (Anders Hej lsberg)" 5.^ Cornelius, Barry (December 1, 2005). "Java 5 catches up with C#". University of Oxford Computing Services. http://www.barrycornelius.com/papers/java5/onefil e/. Retrieved June 18, 2009. "In my opinion, it is C# that has caused these radi cal changes to the Java language. (Barry Cornelius)" 6.^ a b c C# Language Specification (4th ed.). Ecma International. June 2006. ht tp://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf. Retriev ed January 26, 2012. 7.^ Kovacs, James (September 7, 2007). "C#/.NET History Lesson". http://www.jame skovacs.com/blog/CNETHistoryLesson.aspx. Retrieved June 18, 2009. 8.^ "Microsoft C# FAQ". Microsoft. http://msdn.microsoft.com/vcsharp/previous/20 02/FAQ/default.aspx. Retrieved March 25, 2008.[dead link] 9.^ "Visual C#.net Standard" (JPEG). Microsoft. September 4, 2003. http://www.mi crosoft.com/presspass/images/gallery/boxshots/web/visual-c-sharp03.jpg. Retrieve d June 18, 2009. 10.^ "F# FAQ". Microsoft Research. http://research.microsoft.com/en-us/um/cambri dge/projects/fsharp/faq.aspx. Retrieved June 18, 2009.[dead link] 11.^ Simon, Raphael; Stapf, Emmanuel; Meyer, Bertrand (June 2002). "Full Eiffel on the .NET Framework". Microsoft. http://msdn.microsoft.com/en-us/library/ms973 898.aspx. Retrieved June 18, 2009. 12.^ Zander, Jason (November 24, 2008). "Couple of Historical Facts". http://blo gs.msdn.com/jasonz/archive/2007/11/23/couple-of-historical-facts.aspx. Retrieved February 23, 2009. 13.^ "C# 3.0 New Features". http://www.learnitonweb.com/Articles/ReadArticle.asp x?contId=4&page=1. Retrieved June 9, 20010. 14.^ Guthrie, Scott (November 28, 2006). "What language was ASP.Net originally w ritten in?". http://aspadvice.com/blogs/rbirkby/archive/2006/11/28/What-language -was-ASP.Net-originally-written-in_3F00_.aspx. Retrieved February 21, 2008. 15.^ Hamilton, Naomi (October 1, 2008). "The A-Z of Programming Languages: C#". Computerworld. http://www.computerworld.com.au/article/261958/-z_programming_lan guages_c. Retrieved October 1, 2008. 16.^ Bill Joy (February 7, 2002). "Microsoft's blind spot". cnet.com. http://new s.cnet.com/2010-1071-831385.html. Retrieved January 12, 2010. 17.^ Klaus Kreft and Angelika Langer (July 3, 2003). "After Java and C# - what i s next?". artima.com. http://www.artima.com/weblogs/viewpost.jsp?thread=6543. Re trieved January 12, 2010. 18.^ Osborn, John (August 1, 2000), Deep Inside C#: An Interview with Microsoft Chief Architect Anders Hejlsberg, O'Reilly Media, http://windowsdevcenter.com/pu b/a/oreilly/windows/news/hejlsberg_0800.html, retrieved November 14, 2009 19.^ "Generics (C# Programming Guide)". Microsoft. http://msdn.microsoft.com/enus/library/512aeb7t.aspx. Retrieved March 21, 2011. 20.^ Bracha, Gilad (July 5, 2004). "Generics in the Java Programming Language". Sun Microsystems. http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf. Retrie ved March 21, 2011. 21.^ Don Box and Anders Hejlsberg (February 2007). "LINQ: .NET Language-Integrat ed Query". Microsoft. http://msdn.microsoft.com/en-us/library/bb308959.aspx. Ret rieved March 21, 2011. 22.^ Mercer, Ian (April 15, 2010). "Why functional programming and LINQ is often better than procedural code". abodit.com. http://blog.abodit.com/2010/04/why-fu nctional-programming-is-better-linq-c-sharp-than-procedural-code/. Retrieved Mar ch 21, 2011. 23.^ "Andy Retires". Dan Fernandez's Blog. Blogs.msdn.com. January 29, 2004. htt p://blogs.msdn.com/b/danielfe/archive/2004/01/29/64429.aspx. Retrieved October 4 , 2012. 24.^ "Technical committees - JTC 1/SC 22 - Programming languages, their environm ents and system software interfaces". ISO. http://www.iso.org/iso/iso_technical_ committee.html?commid=45202. Retrieved October 4, 2012. 25.^ "ISO/IEC 23270:2003 - Information technology - C# Language Specification". Iso.org. August 23, 2006. http://www.iso.org/iso/iso_catalogue/catalogue_tc/cata

logue_detail.htm?csnumber=36768. Retrieved October 4, 2012. 26.^ "ISO/IEC 23270:2006 - Information technology - Programming languages - C#". Iso.org. January 26, 2012. http://www.iso.org/iso/iso_catalogue/catalogue_ics/c atalogue_detail_ics.htm?csnumber=42926. Retrieved October 4, 2012. 27.^ a b "Using C# 3.0 from .NET 2.0". Danielmoth.com. May 13, 2007. http://www. danielmoth.com/Blog/using-c-30-from-net-20.aspx. Retrieved October 4, 2012. 28.^ Hejlsberg, Anders. "Future directions for C# and Visual Basic". C# lead arc hitect. Channel 9. http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-816T. Re trieved September 21, 2011. 29.^ Venners, Bill; Eckel, Bruce (August 18, 2003). "The Trouble with Checked Ex ceptions". http://www.artima.com/intv/handcuffs.html. Retrieved March 30, 2010. 30.^ a b c d Archer, Tom (2001). "Part 2, Chapter 4: The Type System". Inside C# . Redmond, Washington: Microsoft Press. ISBN 0-7356-1288-9. 31.^ Lippert, Eric (March 19, 2009). "Representation and Identity". Fabulous Adv entures In Coding. Blogs.msdn.com. http://blogs.msdn.com/b/ericlippert/archive/2 009/03/19/representation-and-identity.aspx. Retrieved October 4, 2012. 32.^ "Generics (C# Programming Guide)". Microsoft. http://msdn.microsoft.com/enus/library/512aeb7t.aspx. Retrieved August 7, 2011. 33.^ "C# Preprocessor Directives". C# Language Reference. Microsoft. http://msdn .microsoft.com/en-us/library/ed8yd1ha.aspx. Retrieved June 18, 2009. 34.^ Horton, Anson (September 11, 2006). "C# XML documentation comments FAQ". ht tp://blogs.msdn.com/ansonh/archive/2006/09/11/750056.aspx. Retrieved December 11 , 2007. 35.^ a b "Delimiters for Documentation Tags". C# Programmer's Reference. Microso ft. January 1, 1970 GMT. http://msdn.microsoft.com/en-us/library/5fz4y783(VS.71) .aspx. Retrieved June 18, 2009. 36.^ "Interoperability Principles". http://www.microsoft.com/interop/principles/ default.mspx. 37.^ "Patent Pledge for Open Source Developers". http://www.microsoft.com/intero p/principles/osspatentpledge.mspx. 38.^ "Patent Cooperation Agreement - Microsoft & Novell Interoperability Collabo ration". Microsoft. November 2, 2006. http://www.microsoft.com/interop/msnovellc ollab/patent_agreement.mspx. Retrieved July 5, 2009. "Microsoft, on behalf of it self and its Subsidiaries (collectively "Microsoft"), hereby covenants not to su e Novell's Customers and Novell's Subsidiaries' Customers for infringement under Covered Patents of Microsoft on account of such a Customer's use of specific co pies of a Covered Product as distributed by Novell or its Subsidiaries (collecti vely "Novell") for which Novell has received Revenue (directly or indirectly) fo r such specific copies; provided the foregoing covenant is limited to use by suc h Customer (i) of such specific copies that are authorized by Novell in consider ation for such Revenue, and (ii) within the scope authorized by Novell in consid eration for such Revenue." 39.^ "Definitions". Microsoft. November 2, 2006. http://www.microsoft.com/intero p/msnovellcollab/definitions2.aspx. Retrieved July 5, 2009. 40.^ Steinman, Justin (November 7, 2006). "Novell Answers Questions from the Com munity". http://www.novell.com/linux/microsoft/faq_opensource.html. Retrieved Ju ly 5, 2009. "We maintain that Mono does not infringe any Microsoft patents." 41.^ "Covenant to Downstream Recipients of Moonlight - Microsoft & Novell Intero perability Collaboration". Microsoft. September 28, 2007. http://www.microsoft.c om/interop/msnovellcollab/moonlight.mspx. Retrieved March 8, 2008. ""Downstream Recipient" means an entity or individual that uses for its intended purpose a Mo onlight Implementation obtained directly from Novell or through an Intermediate Recipient Microsoft reserves the right to update (including discontinue) the fore going covenant "Moonlight Implementation" means only those specific portions of M oonlight 1.0 or Moonlight 1.1 that run only as a plug-in to a browser on a Perso nal Computer and are not licensed under GPLv3 or a Similar License." 42.^ Stallman, Richard (June 26, 2009). "Why free software shouldn't depend on M ono or C#". Free Software Foundation. http://www.fsf.org/news/dont-depend-on-mon o. Retrieved July 2, 2009. "The danger is that Microsoft is probably planning to force all free C# implementations underground some day using software patents.

... We should systematically arrange to depend on the free C# implementations as little as possible. In other words, we should discourage people from writing pr ograms in C#. Therefore, we should not include C# implementations in the default installation of GNU/Linux distributions, and we should distribute and recommend non-C# applications rather than comparable C# applications whenever possible." 43.^ "Microsoft's Empty Promise". Free Software Foundation. July 16, 2009. http: //www.fsf.org/news/2009-07-mscp-mono. Retrieved 2009-078-03. "Until that happens , free software developers still should not write software that depends on Mono. C# implementations can still be attacked by Microsoft's patents: the Community Promise is designed to give the company several outs, if it wants them. We don't want to see developers' hard work lost to the community, if we lose the ability to use Mono, and until we eliminate software patents altogether, using another language is the best way to prevent that from happening." 44.^ "The ECMA C# and CLI Standards". July 6, 2009. http://port25.technet.com/ar chive/2009/07/06/the-ecma-c-and-cli-standards.aspx. Retrieved 2009-078-03. 45.^ "Compatibility - Mono". Mono-project.com. December 19, 2011. http://www.mon o-project.com/Compatibility. Retrieved October 4, 2012. [edit] Further readingDrayton, Peter; Albahari, Ben; Neward, Ted (2002). C# Lang uage Pocket Reference. O'Reilly. ISBN 0-596-00429-X. Petzold, Charles (2002). Programming Microsoft Windows with C#. Microsoft Press. ISBN 0-7356-1370-2. [edit] External links Wikibooks has a book on the topic of: C Sharp Programming C# Language Specification (from MSDN) C# Language Specification (hyperlinked, C# Online.NET) C# Programming Guide (MSDN) Download C# Express ISO C# Language Specification. Microsoft Visual C# .NET QuiteCode C# Development [show]v t e.NET Framework Architecture History Base Class Library Common Language Runtime Code Access Securit y Assembly Manifest Metadata COM Interop Application domain Common Language Infrastructure (CLI) Common Language Infrastructure Common Type System Common Inte rmediate Language Virtual Execution System CLI Languages Common1 C# Visual Basic .NET C++/CLI (Managed) F# J# JScript .NET Window s PowerShell

Other2 Axum A# Boo Cobra M Oxygene IronScheme (IronLisp) IronPython IronRuby Nemerle nger P# Scala

Components ADO.NET (Entity Framework Data Services) ASP.NET (AJAX MVC Dynamic Data) C ardSpace ClickOnce CLR Profiler Communication Foundation Dynamic Language Runtime For ms LINQ Managed Extensibility Framework Parallel Extensions Presentation Foundation R emoting "Roslyn" Workflow Foundation XAML Other implementations Mono Compact Framework XNA Framework Micro Framework Portable. NET Silverlight SSCLI Comparisons Java and C# C# and Visual Basic .NET Java and .NET platforms Visual Bas ic and Visual Basic .NET

1 Languages that had been supported, are supported, or will be supported, in Vis ual Studio or .NET Framework.2 Non-academic or research languages with relativel y large user-bases. [show]v t eStandards of Ecma International

AIT ANSI escape code C++/CLI C# CD-ROM CDFS CLI DDS DLT E4X ECMAScript Eiffel FAT ice Open XML OpenXPS Super DLT U3D UDF UDO Ultrium-1 UMD UWB VXA List of Ecma standards [show]v t eISO standards Lists:List of ISO standards List of ISO romanizations List of IEC standards Categor ies:Category:ISO standards Category:OSI protocols

1 9999 1 2 3 4 5 6 7 9 16 31 (-0 -1 -2 -3 -4 -5 -6 -7 -8 0 1004 1007 1073-1 1413 1538 1745 2014 2015 2022 2108 2145 2146 224 02 3864 3901 3977 4031 4157 4217 5218 5775 5776 5800 5964 6166 6344 7810 7811 7812 7813 7816 8000 8178 8217 8571 8583 8601 8632 8652 8879 9000/9001 9075 9126 9293 9241 9362 9407 9506 9529 9564 9594 9

10000 19999 10006 10118-3 10160 10161 10165 10179 10206 10218 10303 (-11 646 10664 10746 10861 10957 10962 10967 11073 11170 11179 11404 11544 (TR) 11992 12006 12182 12207 12234-2 13211 (-1 -2) 13216 13250 13399 13 84 13616 14000 14031 14396 14443 14496 (-2 -3 -6 -10 -11 -12 -14 -1 750 14882 14971 15022 15189 15288 15291 15292 15408 15444 15445 15438 15919 15924 15926 15926 WIP 15930 16023 16262 16750 17024 17025 17369 19011 19092 (-1 -2) 19114 19115 19125 19136 19439 19501:2005 19752 197

20000+ 20000 20022 21000 21047 21827:2002 22000 23270 23271 23360 24613 00 series 27000 27001 27002 27003 27004 27005 27006 27007 27729 27799 2 010 80000 (-2) See also:All articles with prefix "ISO" Retrieved from "http://en.wikipedia.org/w/index.php?title=C_Sharp_(programming_l anguage)&oldid=542613147" Categories: .NET programming languagesC programming language familyClass-based p rogramming languagesC Sharp programming language familyMono (software)Object-ori ented programming languagesStatically typed programming languagesProgramming lan guages created in 2001Programming languages created in the 2000sISO standardsIEC standardsEcma standardsHidden categories: All articles with dead external links Articles with dead external links from June 2009Articles with dead external link s from September 2010Use mdy dates from October 2012Use British (Oxford) English from December 2011All articles with unsourced statementsArticles with unsourced statements from February 2010Articles with unsourced statements from May 2012Na vigation menuPersonal tools Create accountLog inNamespaces ArticleTalkVariantsViews ReadEditView historyActions Search Navigation Main page Contents Featured content Current events Random article Donate to Wikipedia

InteractionHelp About Wikipedia Community portal Recent changes Contact Wikipedia ToolboxWhat links hereRelated changesUpload fileSpecial pagesPermanent linkPage informationCite this page Print/exportCreate a bookDownload as PDFPrintable version Languages??????? Az?rbaycanca ????? ?????????? (???????????)? ????????? Bosanski Catal Cesky Dansk Deutsch Eesti Espaol Esperanto Euskara ????? Franais Galego ??????? ??? Hrvatski Bahasa Indonesia slenska Italiano ????? ??????? ??????? Latvie u Lietuviu Magyar ?????????? ?????? Bahasa Melayu ?????????? Nederlands ????? ???? ??? Norsk bokml O?zbekcha ????????? Plattdtsch Polski Portugus Romna ??????? ???? ???? Simple English Slovencina ????? ?????? / srpski Srpskohrvatski / ?????????????? Suomi Svenska

??? ?????? Trke ?????????? Ti?ng Vi?t Winaray Yorb ?? Edit links This page was last modified on 7 March 2013 at 16:32. Text is available under the Creative Commons Attribution-ShareAlike License; add itional terms may apply. See Terms of Use for details. Wikipedia is a registered trademark of the Wikimedia Foundation, Inc., a non-prof it organization. Contact us Privacy policyAbout WikipediaDisclaimersMobile view

Das könnte Ihnen auch gefallen