Laden...

auto-prperty auch schon in 2.0 nutzbar

Erstellt von antoschka vor 15 Jahren Letzter Beitrag vor 15 Jahren 964 Views
A
antoschka Themenstarter:in
371 Beiträge seit 2007
vor 15 Jahren
auto-prperty auch schon in 2.0 nutzbar

Hallo,

ich nutze VS 2008 Team und programmiere auf .Net 2.0. Kann ich code schon die automatischen Properties nutzen. z.B.:
public Property MyProperty{ get; set; }

Besten Dank antoschka

Gelöschter Account
vor 15 Jahren

das ist ein c# 3.0 feature.

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo antoschka,

ich nutze VS 2008 Team und programmiere auf .Net 2.0. Kann ich code schon die automatischen Properties nutzen.

Probiere es doch einfach aus 😉

Eigentlich sollte es funktionieren, solange du den Code mit dem C# 3.0 Compiler kompilierst (egal, welches Targetframework).
Unter VS 2008 sollte dies also der Fall sein.

A
antoschka Themenstarter:in
371 Beiträge seit 2007
vor 15 Jahren

Genau da lag meine Konfussion.

Ich habe über das Feature gelesen. Mein Kunde gibt aber als Targetframework 2.0 vor. Auf meinem Computer habe ich auch 3.0 & 3.5 installiert jedoch in meinem Projekt nur 2.0 eingebunden,damit ich nicht aus Versehen ein anderes Feature nutze.

Könnte ich also auto-property oder vielleicht sogar auch lambda nutzen und den Code trotzdem auf einem 2.0 Framework ausführen?

Vielen Dank im Voraus für die Erklärung

antoschka

5.742 Beiträge seit 2007
vor 15 Jahren

Könnte ich also auto-property oder vielleicht sogar auch lambda nutzen und den Code trotzdem auf einem 2.0 Framework ausführen?

Wie gesagt: Alles reine "Compilermagie".
Allein dieser ist dafür verantwortlich, dass die Auto-implemented-Properties in "richtige" Properties mit Backingfield umgesetzt werden.
Analog verhält es sich mit den Lambda-Expressions.

Und da der "neue" C# Compiler verschiedene Frameworkversionen unterstützt, kann man einige C# 3.0 Features auch mit früheren .NET Versionen verwenden.
Ausschlaggebend für die benötigte Frameworkversion ist die Einstellung in VS bzw. der entsprechend an den Compiler übergebene Parameter.

C
92 Beiträge seit 2008
vor 15 Jahren

Das man bei der Variablendeklaration einfach 'var' schreiben kann ist meines Wissens auch C# 3.0 und das geht auch bei Zielplattform 2.0

F
10.010 Beiträge seit 2004
vor 15 Jahren

Und mit LinqBridge zusammen gehen auch ExtensionMethods.

26 Beiträge seit 2009
vor 15 Jahren

Hallo antoschka

Das hat nicht direkt was mit der Version des .Net Frameworks zu tun. Verantwortlich dafür ist der Visual C# Compiler. Bei Visual Studio 2008 wird eine andere Version als bei Visual Studio 2005 verwendet.

Der neuere Visual C# Compiler ist in der Lage, die automatisch implementierten Eigenschaften zu interpretieren. Außerdem kann er zwischen verschiedenen Versionen des .Net Frameworks hin und her schalten.

Das bedeutet, das einige Programme, die in Visual Studio 2008 gegen das .Net Framework 2.0 compiliert werden, sich zwangsläufig nicht mehr mit Visual Studio 2005 comilieren lassen.

Letztendlich ist es dem .Net Framework jedoch egal, wie Eigenschaften im Quellcode spezifiziert werden, solange es sich später in MSIL Code umwandeln lässt.

Als Beweis kann man mit dem ILDASM Tool sich den MSIL Code anzeigen lassen. Dann sieht man, das Eigenschaften gar nicht mehr existieren sondern wie in guter alter COM Manier, in eine Getter und Setter Methode umgewandelt wurden.

Gruß,
Thomas van Veen