Gå til innhold

Anbefalte innlegg

Driver å imiterer Linq i .NET 2.0 her for morroskyld og stusser litt på en kompileringsfeil jeg ikke kommer rundt.

public interface ILinq<T> : IEnumerable<T>
{
ILinq<T> Where(Predicate<T> predicate);
}

public class LinqList<T> : List<T>, ILinq<T>
{
public ILinq<T> Where(Predicate<T> predicate)
{
foreach(T item in this)
if(predicate(item))
yield return item;
}
}

 

Med dette får jeg kompileringsfeilen "The body of "Net2Linq.LinqList<T>.Where(System.Predicate<T>)' cannot be an iterator block because 'Net2Linq.ILinq<T>' is not an iterator interface type"

 

Den er forsåvidt grei nok...men kan bare ikke fatte hvorfor den ikke godtar det siden ILinq interfacet arver fra IEnumerable<T>. Om Where metoden returnerer IEnumerable<T> så fungerer det nemlig.

Lenke til kommentar
Videoannonse
Annonse

Ja, noen datatyper blir brukt av compileren... litt kjipt at den ikke tar med arven av IEnumerable, men det er jo strengt tatt ikke nødvendig allikevel :)

Kanskje using blir er like teit, dersom du lager et interface som arver fra IDisposable og deretter arver det interfacet igjen i en klasse/struktur hadde det ikke overrasket meg fullstendig om den hadde klaget heller... men jeg bryr meg ikke nok til å teste.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...