Mono: есть ли система.Кортеж?

Я пытаюсь сделать некоторое взаимодействие между C# и F# в Mono. Есть ли система.Кортеж в Mono на C#? Я вижу ту, что в моно.CSharp, но это, похоже, не тот же тип, что и F# (a' * b'). Итак,

(a) существует ли система.Кортеж в Mono C# или (b) существует ли приведение между кортежами в Mono C# и F#?

3 ответов


да моно поддерживает Tuple тип. Я знаю, что это в 4.0, но я видел комментарии о его доступности с версии 2.6.


это также зависит от того, какую версию компилятора F# вы используете. Если вы скомпилируете свой код F# с помощью компилятора F# для .NET 2.0, он будет использовать FSharp.Core.dll для .NET 2.0, который содержит объявление Tuple<..> классы. Тогда вы можете просто ссылаться FSharp.Core.dll из вашего проекта C#, и вы найдете там Кортеж (он находится в System пространство имен, чтобы сделать его совместимым с .NET 4)

Я считаю, что ZIP-релиз от Microsoft и пакеты F# оба содержат 2.0 версия. Я не уверен в версии F# в комплекте с Mono 2.10 или в Debian.


Я только что пытался

System.Tuple<int, int> t2 = new System.Tuple<int, int>(1, 2); 

и это сработало, по версии 4.0