Hallo

Zitat von
Dax:
Tut mir Leid wenn ich dir damit zuvorgekommen bin ^^
Ich habs überlebt...
Zitat:
Einmal für IEnumerable und einmal für IEnumerable<T>. Anders gings nicht

Hm... interessant. Eigentlich sollte das doch gehen, indem du einfach kein Interface vorher angibtst. Damit sollten sich doch beide Interfaces zufrieden geben. Versteh also momentan noch nicht warums nicht geht. Wenn ich mich erst mal mit Generics befasst hab(hab momentan noch .NET 1.1 am Laufen), wird sich das wahrscheinlich klären...
Zitat:
Das wird nix... structs dürfen keine Parameterlosen Konstruktoren haben, und Feldinitialisatoren auch nicht.
Stört aber doch nicht. Nimm einfach den anderen Parameter und lass auch null zu. Und die Felder kann man auch im Konstruktor initialisieren... Bin gerade dabei Sets für .NET 1.1 zu implementieren(wenn du willst, kann ichs, wenns fertig is, ja mal anhängen) und nehm dafür structs. Hab bisher damit keine Probleme.
Wärend dessen is mir noch n bisschen was aufgefallen:
- sollte als Enumerator nicht
Code:
public IEnumerator GetEnumerator()
{
return inner.GetEnumerator();
}
reichen? Oder geht das wegen der Generics nicht?
- Wie wärs mit m implicit operator; bei mir(ohne generics) funktioniert das nicht, da ich object als implicit-Parameter nehmen müsste und set ja von object abgeleitet ist; bei deiner Version könnts aber klappen
- Leider kann man "in" nicht überladen. Hab dafür also einfach "%" genommen. Sieht zwar nicht so toll aus, funktioniert aber...
Ah und nochwas is mir aufgefallen:
Code:
public static Set<T> operator +(Set<T> left, Set<T> right)
{
Set<T> result = new Set<T>();
result.inner.AddRange(left.inner);
result.Include(right);
return result;
}
Warum benutzt du einmal AddRange und einmal Include. Du könntest du für beides Include verwenden...
mfg
Christian