FSharpList<T>
(то есть .Net-имя типа F # list<T>
) не реализует IList<T>
, потому что это не имеет смысла.
IList<T>
предназначен для доступа и изменения коллекций, к которым можно получить доступ по индексу, а list<T>
- нет.Чтобы использовать его из C #, вы можете использовать тип явно:
FSharpList<MyModule.X> l = MyModule.l;
var l = MyModule.l; // the same as above
Или вы можете использовать тот факт, что он реализует IEnumerable<T>
:
IEnumerable<MyModule.X> l = MyModule.l;
Или, если вы делаетенужно IList<T>
, вы можете использовать LINQ ToList()
, как предложила Ани:
IList<MyModule.X> l = MyModule.l.ToList();
Но вы должны помнить, что список F # неизменен, и поэтому нет способа его изменить.