Hallo,
in C# 3.0 wird es das Schlüsselwort var neu geben, um Type Infering zu unterstützen. Bei den klassischen Typen ist das ja auch alles kein Thema, aber bei anonymen Typen stellt sich mir seit einiger Zeit die Frage, wie ich eine Methode damit definieren würde?
Also quasi:
var MyVariable = from ... select;
MyObject.MyMethod(MyVariable);
Wie müsste ich die Methode MyMethod deklarieren?
Als void MyMethod(xyz MyParam) ... bloß, was gebe ich für xyz an? var? object?
Weiß da jemand näheres?
Danke,
Golo
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Gute Frage. Ich selbst habe mit den neuen Spracherweiterungen noch nichts gemacht, würde aber sagen, dass du in diesem Fall den Typ xyz explizit definieren musst - also keine anonymen Typen verwenden kannst.
Das Ergebnis, das die from ... - Klausel zurückgibt, implementiert auf jeden Fall eine IEnumrable Schnittstelle. (Soweit ich weiß)
Ich würde es dann wohl so implementieren (mit Object Initializers):
struct MyType {
int id;
public int Id { get{return id;} set {id = value;} }
}
var myVar = from ... select new MyType { Id = ... } // object initializer
MyMethod(myVar);
void MyMethod(IEnumerable<MyType> param)
{
...
}
Wie gesagt, ich habe die Sache noch nicht getestet... Ausprobieren 😉
I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.
Das mit IEnumerable klingt vernünftig, da ich auf den anonymen Typ eh nur über Interface-Methoden zugreifen kann.
Danke 🙂!
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hallo Der Eisbär,
bitte poste mal den Link/die Links, wo du die Infos über var/type infering her hast.
herbivore
Hallo herbivore,
dazu habe ich leider keinen Link (wobei es unter dem Stichwort LinQ genug Ergebnisse geben sollte, dass da was entsprechendes dabei ist).
Mein Wissen darüber habe ich von der PDC05.
Viele Grüße,
Golo
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden