Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 需要帮助将C#转换为F吗#_F# - Fatal编程技术网

F# 需要帮助将C#转换为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

我想知道如何将这段代码逐行从C转换为F。我不想使用任何F#的成语或类似的东西。我正在努力理解如何在F#中枚举和反射

使用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()