Einführung in die Programmiersprache C# und in .NET FrameworkIntroduction to the C# Language and the .NET Framework

C# ist eine elegante, typsichere und objektorientierte Sprache, mit der Entwickler eine Vielzahl sicherer und robuster Anwendungen erstellen können, die in .NET Framework.NET Framework ausgeführt werden.C# is an elegant and type-safe object-oriented language that enables developers to build a variety of secure and robust applications that run on the .NET Framework.NET Framework. Mit C# können Sie Windows-Clientanwendungen, XML-Webdienste, verteilte Komponenten, Client-/Serveranwendungen, Datenbankanwendungen und vieles mehr erstellen.You can use C# to create Windows client applications, XML Web services, distributed components, client-server applications, database applications, and much, much more. Visual C# bietet basierend auf der C#-Sprache und .NET Framework.NET Framework einen erweiterten Code-Editor, komfortable Benutzeroberflächen-Designer, integrierte Debugger und viele weitere Tools zur einfachen Anwendungsentwicklung.Visual C# provides an advanced code editor, convenient user interface designers, integrated debugger, and many other tools to make it easier to develop applications based on the C# language and the .NET Framework.NET Framework.

Hinweis

Bei der Visual C#Visual C#-Dokumentation werden Kenntnisse zu allgemeinen Programmierkonzepten vorausgesetzt.The Visual C#Visual C# documentation assumes that you have an understanding of basic programming concepts. Als Anfänger sollten Sie sich mit Visual C# Express vertraut machen, das im Web verfügbar ist.If you are a complete beginner, you might want to explore Visual C# Express, which is available on the Web. Außerdem können Sie sich anhand von Büchern und Webressourcen über C# praktische Programmierkenntnisse aneignen.You can also take advantage of books and Web resources about C# to learn practical programming skills.

Die Programmiersprache C#C# Language

Die C#-Syntax ist trotz ihrer Ausdrucksfülle einfach und leicht zu erlernen.C# syntax is highly expressive, yet it is also simple and easy to learn. Die C#-Syntax mit geschweiften Klammern ist für alle Benutzer sofort erkennbar, die mit C, C++ oder Java vertraut sind.The curly-brace syntax of C# will be instantly recognizable to anyone familiar with C, C++ or Java. Entwickler, die mit einer dieser Sprachen vertraut sind, können C# normalerweise innerhalb kürzester Zeit produktiv anwenden.Developers who know any of these languages are typically able to begin to work productively in C# within a very short time. Mit der C#-Syntax werden viele der Komplexitäten von C++ vereinfacht. Zugleich stehen leistungsfähige Features zur Verfügung, z. B. auf NULL festlegbare Werttypen, Enumerationen, Delegaten, Lambda-Ausdrücke und direkter Speicherzugriff, die in Java nicht enthalten sind.C# syntax simplifies many of the complexities of C++ and provides powerful features such as nullable value types, enumerations, delegates, lambda expressions and direct memory access, which are not found in Java. C# unterstützt generische Methoden und Typen für verbesserte Typsicherheit und Leistung sowie Iteratoren, mit denen Implementierer von Auflistungsklassen benutzerdefiniertes Iterationsverhalten definieren können, das vom Clientcode einfach verwendet werden kann.C# supports generic methods and types, which provide increased type safety and performance, and iterators, which enable implementers of collection classes to define custom iteration behaviors that are simple to use by client code. Language-Integrated Query (LINQ)Language-Integrated Query (LINQ)-Ausdrücke machen eine Abfrage mit starker Typisierung zu einem erstklassigen Sprachkonstrukt. expressions make the strongly-typed query a first-class language construct.

Als objektorientierte Sprache unterstützt C# die Konzepte der Kapselung, Vererbung und Polymorphie.As an object-oriented language, C# supports the concepts of encapsulation, inheritance, and polymorphism. Alle Variablen und Methoden, einschließlich der Main-Methode, die den Einstiegspunkt der Anwendung darstellt, werden innerhalb der Klassendefinition gekapselt.All variables and methods, including the Main method, the application's entry point, are encapsulated within class definitions. Eine Klasse kann direkt von einer übergeordneten Klasse erben, aber auch eine beliebige Anzahl von Schnittstellen implementieren.A class may inherit directly from one parent class, but it may implement any number of interfaces. Methoden, die virtuelle Methoden in einer übergeordneten Klasse überschreiben, erfordern das override-Schlüsselwort als Möglichkeit, eine versehentliche Neudefinition zu verhindern.Methods that override virtual methods in a parent class require the override keyword as a way to avoid accidental redefinition. In C# verhält sich eine Struktur wie eine vereinfachte Klasse. Sie entspricht einem auf dem Stapel reservierten Typ, der Schnittstellen implementieren kann, jedoch keine Vererbung unterstützt.In C#, a struct is like a lightweight class; it is a stack-allocated type that can implement interfaces but does not support inheritance.

Neben diesen objektorientierten Grundprinzipien vereinfacht C# die Entwicklung von Softwarekomponenten mithilfe mehrerer innovativer Sprachkonstrukte, z. B. folgender:In addition to these basic object-oriented principles, C# makes it easy to develop software components through several innovative language constructs, including the following:

  • Gekapselte Methodensignaturen, Delegaten genannt, die typsichere Ereignisbenachrichtigungen ermöglichen.Encapsulated method signatures called delegates, which enable type-safe event notifications.

  • Eigenschaften, die als Zugriffsmethoden für private Membervariablen dienen.Properties, which serve as accessors for private member variables.

  • Attribute, die zur Laufzeit deklarative Metadaten zu Typen bereitstellen.Attributes, which provide declarative metadata about types at run time.

  • Inline-XML-Dokumentationskommentare.Inline XML documentation comments.

  • Language-Integrated Query (LINQ)Language-Integrated Query (LINQ), die integrierte Abfragefunktionen für eine Vielzahl von Datenquellen bereitstellt. which provides built-in query capabilities across a variety of data sources.

Die Interaktion mit weiterer Windows-Software, z. B. COM-Objekten oder systemeigenen Win32-DLLs, wird in C# durch einen Prozess mit dem Namen "Interop" ermöglicht.If you have to interact with other Windows software such as COM objects or native Win32 DLLs, you can do this in C# through a process called "Interop." Mithilfe von Interop bieten C#-Programme dieselbe Funktionalität wie systemeigene C++-Anwendungen.Interop enables C# programs to do almost anything that a native C++ application can do. C# unterstützt sogar Zeiger und das Konzept des "unsicheren" Codes für jene Fälle, in denen direkter Speicherzugriff besonders wichtig ist.C# even supports pointers and the concept of "unsafe" code for those cases in which direct memory access is absolutely critical.

Der C#-Erstellungsprozess ist im Vergleich zu C und C++ einfach und flexibler als in Java.The C# build process is simple compared to C and C++ and more flexible than in Java. Es gibt keine separaten Headerdateien. Außerdem ist es nicht erforderlich, Methoden und Typen in einem bestimmten Ordner zu deklarieren.There are no separate header files, and no requirement that methods and types be declared in a particular order. Eine C#-Quelldatei kann eine beliebige Anzahl von Klassen, Strukturen, Schnittstellen und Ereignissen definieren.A C# source file may define any number of classes, structs, interfaces, and events.

Die folgenden zusätzlichen C#-Ressourcen stehen zur Verfügung:The following are additional C# resources:

.NET Framework-Plattformarchitektur.NET Framework Platform Architecture

C#-Programme werden auf Grundlage von .NET Framework.NET Framework ausgeführt, einer integralen Windows-Komponente, die ein virtuelles Ausführungssystem mit dem Namen Common Language Runtime (CLR) sowie einen einheitlichen Satz Klassenbibliotheken enthält.C# programs run on the .NET Framework.NET Framework, an integral component of Windows that includes a virtual execution system called the common language runtime (CLR) and a unified set of class libraries. CLR ist die kommerzielle Microsoft-Implementierung der Common Language Infrastructure (CLI), einem internationalen Standard, der die Grundlage für das Erstellen von Ausführungs- und Entwicklungsumgebungen darstellt, in denen Sprachen und Bibliotheken nahtlos zusammenarbeiten.The CLR is the commercial implementation by Microsoft of the common language infrastructure (CLI), an international standard that is the basis for creating execution and development environments in which languages and libraries work together seamlessly.

Der in C# geschriebene Quellcode wird in einen Intermediate Language (IL)-Code kompiliert, der der CLI-Spezifikation entspricht.Source code written in C# is compiled into an intermediate language (IL) that conforms to the CLI specification. Der IL-Code wird zusammen mit Ressourcen wie z. B. Bitmaps und Zeichenfolgen in einer ausführbaren Datei gespeichert, der so genannten Assembly, die normalerweise die Erweiterung EXE oder DLL aufweist.The IL code and resources, such as bitmaps and strings, are stored on disk in an executable file called an assembly, typically with an extension of .exe or .dll. Eine Assembly enthält ein Manifest, das Informationen über die Typen, die Version, die Kultur und die Sicherheitsanforderungen der Assembly bereitstellt.An assembly contains a manifest that provides information about the assembly's types, version, culture, and security requirements.

Beim Ausführen des C#-Programms wird die Assembly in die CLR geladen, was je nach den im Manifest enthaltenen Informationen die Durchführung verschiedener Aktionen erfordert.When the C# program is executed, the assembly is loaded into the CLR, which might take various actions based on the information in the manifest. Wenn die Sicherheitsanforderungen erfüllt sind, konvertiert die CLR den IL-Code mithilfe der Just-In-Time (JIT)-Kompilierung in systemeigene Maschinenanweisungen.Then, if the security requirements are met, the CLR performs just in time (JIT) compilation to convert the IL code to native machine instructions. Die CLR stellt darüber hinaus weitere Dienste zur automatischen Garbage Collection, Ausnahmebehandlung und Ressourcenverwaltung bereit.The CLR also provides other services related to automatic garbage collection, exception handling, and resource management. Der über die CLR ausgeführte Code wird manchmal als "verwalteter Code" bezeichnet. Dieser steht im Gegensatz zum "nicht verwalteten Code", der in systemeigene Maschinensprache kompiliert wird, die auf ein bestimmtes System abgestimmt ist.Code that is executed by the CLR is sometimes referred to as "managed code," in contrast to "unmanaged code" which is compiled into native machine language that targets a specific system. Das folgende Diagramm veranschaulicht die Beziehungen zwischen C#-Quellcodedateien, den .NET Framework-Klassenbibliotheken, Assemblys sowie der CLR zur Kompilierzeit und zur Laufzeit.The following diagram illustrates the compile-time and run-time relationships of C# source code files, the .NET Framework class libraries, assemblies, and the CLR.

Vom C#-Quellcode zur ComputerausführungFrom C# source code to machine execution

Eines der wichtigsten Features in .NET Framework.NET Framework ist die Sprachinteroperabilität.Language interoperability is a key feature of the .NET Framework.NET Framework. Da der vom C#-Compiler generierte IL-Code der CTS (Common Type Specification) entspricht, kann er mit Code interagieren, der mit den .NET-Versionen von Visual Basic, Visual C++ oder mit einer der mehr als 20 weiteren CTS-kompatiblen Sprachen generiert wurde.Because the IL code produced by the C# compiler conforms to the Common Type Specification (CTS), IL code generated from C# can interact with code that was generated from the .NET versions of Visual Basic, Visual C++, or any of more than 20 other CTS-compliant languages. Eine einzelne Assembly kann mehrere in verschiedenen .NET-Sprachen erstellte Module enthalten, und die Typen können aufeinander verweisen, ganz so, als wären sie in derselben Sprache geschrieben worden.A single assembly may contain multiple modules written in different .NET languages, and the types can reference each other just as if they were written in the same language.

Zusätzlich zu den Laufzeitdiensten enthält .NET Framework.NET Framework eine ausführliche Bibliothek mit mehr als 4.000 in Namespaces organisierten Klassen, die eine Vielzahl hilfreicher Funktionen bereitstellen, von der Dateieingabe und -ausgabe bis zur Zeichenfolgenbearbeitung, zur XML-Analyse und zu Windows Forms-Steuerelementen.In addition to the run time services, the .NET Framework.NET Framework also includes an extensive library of over 4000 classes organized into namespaces that provide a wide variety of useful functionality for everything from file input and output to string manipulation to XML parsing, to Windows Forms controls. Eine typische C#-Anwendung verwendet für die Ausführung allgemeiner Routinearbeiten ausgiebig die .NET Framework.NET Framework-Klassenbibliothek.The typical C# application uses the .NET Framework.NET Framework class library extensively to handle common "plumbing" chores.

Weitere Informationen zu .NET Framework finden Sie unter Overview of the Microsoft .NET Framework 3.0 (Überblick über Microsoft .NET Framework 3.0).For more information about the .NET Framework, see Overview of the Microsoft .NET Framework.

Siehe auchSee Also

C#: Erste Schritte mit Visual C# und Visual BasicC# Getting Started with Visual C# and Visual Basic