F# 需要帮助将C#转换为F吗#
我想知道如何将这段代码逐行从C转换为F。我不想使用任何F#的成语或类似的东西。我正在努力理解如何在F#中枚举和反射F# 需要帮助将C#转换为F吗#,f#,F#,我想知道如何将这段代码逐行从C转换为F。我不想使用任何F#的成语或类似的东西。我正在努力理解如何在F#中枚举和反射 使用System.Linq; 命名空间System.Collections.Generic { 公共静态类EnumerableExtensions { 私有静态只读随机; 静态EnumerableExtensions() { 随机=新随机(); } 公共静态T随机(此IEnumerable输入) { 返回input.ElementAt(random.Next(input.Count
使用System.Linq;
命名空间System.Collections.Generic
{
公共静态类EnumerableExtensions
{
私有静态只读随机;
静态EnumerableExtensions()
{
随机=新随机();
}
公共静态T随机(此IEnumerable输入)
{
返回input.ElementAt(random.Next(input.Count());
}
}
}
您可以将扩展定义为类型中的静态方法,但必须使用Extension
属性标记这些方法。直接重写您的C#代码将是:
open System.Runtime.CompilerServices
[<Extension>]
type EnumerableExtensions() =
static let rnd = System.Random()
[<Extension>]
static member Random(input:seq<_>) =
input |> Seq.item (rnd.Next(Seq.length input))
[1;2;3].Random()
open System.Runtime.CompilerServices
[]
类型EnumerableExtensions()=
静态let rnd=System.Random()
[]
静态成员随机(输入:seq)=
输入|>序号项目(rnd.Next(序号长度输入))
[1;2;3].Random()
您的随机变量应具有[ThreadStatic]
属性,以使代码在多线程情况下安全。
open System.Runtime.CompilerServices
[<Extension>]
type EnumerableExtensions() =
static let rnd = System.Random()
[<Extension>]
static member Random(input:seq<_>) =
input |> Seq.item (rnd.Next(Seq.length input))
[1;2;3].Random()