ein Projekt von goloroden.de

Häufige Fragen

Allgemeines

Auf dieser Webseite finden Sie häufig gestellte Fragen und deren Antworten zu C#, .NET und verwandten Themen. Falls Ihre Frage hier nicht oder nur unzureichend beantwortet wird, können Sie sich gerne an uns wenden.

C#

Was bedeutet das @ vor Bezeichnern?

Wird einem Bezeichner ein @ vorangestellt, so wird nicht überprüft, ob es sich bei dem Bezeichner um ein Schlüsselwort von C# handelt. Dadurch ist es möglich, Schlüsselwörter als Bezeichner zu verwenden:
C#
1
2
3
4
public class @class
{
    // ...
}

Was bedeutet das @ vor String-Literalen?

Wird einem String-Literal ein @ vorangestellt, so werden enthaltene Escape-Sequenzen wie beispielsweise \n nicht ausgewertet, sondern als normaler Text behandelt. Dadurch ist es unter anderem möglich, Pfadangaben lesbarer abzulegen.

An Stelle von
C#
1
string path = "C:\\Dokumente und Einstellungen\\Golo Roden\\Eigene Dateien";
kann statt dessen
C#
1
string path = @"C:\Dokumente und Einstellungen\Golo Roden\Eigene Dateien";
geschrieben werden. Soll in einem String-Literal, dem ein @ vorangestellt wurde, ein Anführungszeichen eingebettet werden, so muss dieses verdoppelt werden:
C#
1
string cite = @"Sie sagte: ""Hallo!""";
Zudem können Zeilenumbrüche direkt in das String-Literal eingebettet werden, die dann der Escape-Sequenz \n entsprechen. Die Zeile
C#
1
2
3
string multilineText =
    @"Zeile 1
    Zeile 2";
entspricht also
C#
1
string multilineText = "Zeile 1\nZeile 2";

Was ist der Unterschied zwischen new und override?

Wird eine virtuelle Methode in einer abgeleiteten Klasse überschrieben, muss die überschreibende Methode entweder mit dem Schlüsselwort new oder mit dem Schlüsselwort override gekennzeichnet werden. Während ersteres die ursprüngliche Methode nur ausblendet, wird diese durch zweiteres tatsächlich überschrieben.

Der Unterschied wird spürbar, wenn ein Objekt der abgeleiteten Klasse auf die ursprüngliche Basisklasse gecastet wird, und die überschriebene Methode an diesem Verweis aufgerufen wird. Wurde die überschreibende Methode mit new gekennzeichnet, so wird die zu dem Typ des Verweises passende Methode aufgerufen, also die überschriebene Methode. Wurde die überschreibende Methode statt dessen mit override gekennzeichnet, so wird die zum Objekt passende Methode aufgerufen, unabhängig vom Typ des Verweises.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class BaseClass
{
    public virtual void Foo()
    {
    }
}

public class DerivedClassA : BaseClass
{
    public override void Foo()
    {
    }
}

public class DerivedClassB : BaseClass
{
    public new void Foo()
    {
    }
}

public class Program
{
    public static void Main()
    {
        DerivedClassA a = new DerivedClassA();
        DerivedClassB b = new DerivedClassB();

        a.Foo(); // Calls DerivedClassA.Foo
        b.Foo(); // Calls DerivedClassB.Foo

        ((BaseClass)a).Foo(); // Calls DerivedClassA.Foo
        ((BaseClass)b).Foo(); // Calls BaseClass.Foo
    }
}

.NET

Welche Versionen von .NET gibt es?

.NET Common Language Runtime Framework Class Library Erweiterungen C# Visual Basic .NET Visual Studio
1.0 1.0 1.0 - 1.0 7.0 2002
1.1 1.1 1.1 - 1.1 7.1 2003
2.0 2.0 2.0 - 2.0 8.0 2005
3.0 2.0 2.0 WPF, WCF, WF, AJAX 2.0 8.0 2005 mit Erweiterungen
3.5 2.0 2.0 WPF, WCF, WF, AJAX, LINQ 3.0 9.0 2008

Wie kann .NET unter Linux ausgeführt werden?

Während die von Microsoft veröffentlichte Version von .NET nicht unter Linux lauffähig ist, gibt es zusätzliche Varianten von Drittanbietern, die auch für andere Plattformen zur Verfügung stehen.

Am bekanntesten davon ist Mono, das von Novell entwickelt wird. Mono läuft unter anderem unter Windows, Linux und Mac OS X und unterstützt zahlreiche Plattformen, unter anderem auch StrongARM, s390 und PowerPC.

Wie kann eine in .NET entwickelte Anwendung ohne .NET ausgeführt werden?

Die kurze Antwort lautet: Es ist nicht möglich, in .NET entwickelte Anwendungen auszuführen, ohne auch .NET installieren zu müssen. Ebenso wie zahlreiche Spiele DirectX voraussetzen, benötigen in .NET geschriebene Anwendungen so wohl die Framework Class Library wie auch die Common Language Runtime, um ausgeführt werden zu können.

Da .NET in die aktuellen Windowsversionen wie Windows Vista und Windows Server 2003 von Haus integriert ist, ist inzwischen keine zusätzliche Installation seitens des Anwenders mehr erforderlich.

Allerdings gibt es dennoch eine Möglichkeit, in .NET entwickelte Anwendungen ohne installiertes .NET ausführen zu können. Mit .NET Framework Virtualization von Thinstall ist es möglich, ein abgespecktes Framework in die auszuführende Anwendung einzubetten, so dass das Framework zumindest nicht als eigenständige Installation benötigt wird.

Visual Studio

Welche integrierten Entwicklungsumgebungen gibt es?

Microsoft, von denen auch .NET an sich stammt, bietet eine integrierte Entwicklungsumgebung namens Visual Studio an. Visual Studio gibt es in verschiedenen Editionen, die unterschiedliche Zielgruppen ansprechen, vom Hobbyentwickler bis hin zu professionellen Entwicklerteams.

Die kleinste Ausführung, die sogenannte Express-Edition, steht zudem kostenlos zur Verfügung. Für den Einstieg in die Entwicklung mit C# und .NET reicht diese Edition zunächst vollkommen aus.

Auch andere Hersteller bieten integrierte Entwicklungsumgebungen an, so beispielsweise Omnicore mit XDevelop und Borland mit C# Builder.

Außerdem gibt es noch eine kostenlos verfügbare integrierte Entwicklungsumgebung für C#, die als Opensource-Projekt entwickelt wird, nämlich SharpDevelop. Zudem steht eine speziell an Mono angepasste Version von SharpDevelop namens MonoDevelop zur Verfügung.

Alternativ kann die ebenfalls freie Entwicklungsumgebung Eclipse um entsprechende Plug-Ins ergänzt werden, um für die Entwicklung mit C# und .NET eingesetzt zu werden.

Wie kann Code automatisch formatiert werden?

Visual Studio unterstützt die automatische Formatierung von Code. Ausgelöst wird dies durch den Menüpunkt "Bearbeiten > Erweitert > Dokument formatieren" oder durch die Tastenkombination Strg + K, Strg + D.

Welche empfehlenswerten Erweiterungen gibt es zu Visual Studio?

Seit der Version 2005 unterstützt Visual Studio das Umgestalten von Code, sogenanntes Refactoring. Leider sind die in Visual Studio enthaltenen Umgestaltungsmöglichkeiten sehr beschränkt, weshalb es einige Produkte von Drittanbietern gibt, die diese Fähigkeiten nachrüsten.

Bekannte Produkt sind Refactor! Pro von Developer Express, ReSharper von JetBrains und Visual Assist von Whole Tomato Software.

Infrastruktur

Wozu dient eine Versionsverwaltung?

Eine Versionsverwaltung ist eine Software, die sämtliche am Quellcode einer Anwendung vorgenommenen Änderungen archiviert und mit einer Versionsnummer und einem Zeitstempel versieht, so dass zu einem späteren Zeitpunkt auf jede beliebige Version zugegriffen werden kann. Zudem ermöglicht eine Versionsverwaltung das gleichzeitige Bearbeiten einer Datei von mehreren Entwicklern, wobei Konflikte automatisch aufgelöst werden.

Eine sehr bekannte Versionsverwaltung, die zudem kostenlos und als Opensource zur Verfügung steht, ist Subversion. Für den komfortablen Umgang mit Subversion steht zudem eine Erweiterung für den Windows-Explorer namens TortoiseSVN zur Verfügung.

Eine Integration von Subversion in Visual Studio ist unter anderem mit AnkhSVN und VisualSVN möglich. Während ersteres ein Opensource-Projekt und somit kostenlos erhältlich ist, ist VisualSVN kostenpflichtig. Allerdings bereitet AnkhSVN im Betrieb mit mehreren gleichzeitigen Benutzern häufig Probleme, weshalb VisualSVN für Teams besser geeignet ist.

Was sind Unittests?

TODO: NUnit
TODO: TestDriven .NET

Was ist ein Buildwerkzeug?

TODO: NAnt
TODO: MS Build

Wie können Builds automatisiert werden?

Um Builds automatisch zu erstellen, gibt es sogenannte Buildserver. Diese überwachen die Versionsverwaltung und erstellen entweder in regelmäßigen Intervallen oder nach jeder Aktualisierung des Quellcodes einen Build.

Da der Stand auf dem Buildserver quasi einen Referenzstand darstellt, ist nach jedem Build ersichtlich, ob die Anwendung kompiliert werden kann oder nicht. Fehler, die durch die Zusammenarbeit im Team entstehen, können auf diese Art unter Umständen deutlich schneller entdeckt und behoben werden.

Ein bekannter Buildserver für .NET, der zudem als Opensource und somit kostenlos zur Verfügung steht, ist CruiseControl .NET von ThoughtWorks.

Wie kann eine umfassende Dokumentation erstellt werden?

TODO: XML-Kommentare
TODO: GhostDoc
TODO: /xml-Option
TODO: NDoc
TODO: SandCastle

guide to C#

Welche Infrastruktur wird von guide to C# genutzt?

Die Webseite guide to C# wird derzeit in Visual Studio 2008 unter Einsatz der Erweiterungen Refactor! Pro von Developer Express und VisualSVN entwickelt. Es basiert auf ASP.NET 2.0 sowie den ASP.NET AJAX Extensions 3.5.

Als Versionsverwaltung wird Subversion eingesetzt, wobei der Build mit CruiseControl .NET von ThoughtWorks erstellt wird. Als Buildwerkzeug kommt MS Build zum Einsatz. Für Bug- und Issuetracking wird OnTime eingesetzt.

Da das Projekt im Wesentlichen nicht aus Code, sondern aus Text besteht, werden derzeit weder Unittests noch Dokumentationswerkzeuge eingesetzt.

Welche Version von C# wird von guide to C# beschrieben?

guide to C# beschreibt die Versionen 1.0, 1.1, 2.0 und 3.0 von C#, wobei in der Regel darauf hingewiesen wird, wenn Sprachelemente erst ab einer bestimmten Version verfügbar sind. Der Fokus von guide to C# liegt jedoch auf der Version 3.0 von C#.

Wo befindet sich die alte Version von guide to C#?

Die alte Version von guide to C#, die bis Dezember 2007 gültig war und nur C# 1.0 behandelt, steht unter http://www.guidetocsharp.de/Old/ zur Verfügung.