F#是否具有与C#'等价的语法;s";“不安全”;块

F#是否具有与C#'等价的语法;s";“不安全”;块,c#,.net,arrays,f#,C#,.net,Arrays,F#,大量的阵列边界检查会降低速度,尤其是二维阵列。有没有办法用F#编写不安全的代码块?我不是程序员,但据我所知,它似乎没有关键字 通过将二维阵列转换为一维阵列,您可能会获得性能提升 建议5:在我们做对之前,我 会建议.NET用户做什么 很多C++程序员都会这样做: 编写一个类来实现 n维数组。这将是 表示为一维数组, 而相关的访问者将 将n个索引通过 适当的乘法。我们 几乎肯定不会消除 一维数组的边界检查, 但至少我们只做了一次检查 不在这个版本中,我怀疑他们是否会添加它。我没有使用它来了解它是否适

大量的阵列边界检查会降低速度,尤其是二维阵列。有没有办法用F#编写不安全的代码块?

我不是程序员,但据我所知,它似乎没有关键字

通过将二维阵列转换为一维阵列,您可能会获得性能提升

建议5:在我们做对之前,我 会建议.NET用户做什么 很多C++程序员都会这样做: 编写一个类来实现 n维数组。这将是 表示为一维数组, 而相关的访问者将 将n个索引通过 适当的乘法。我们 几乎肯定不会消除 一维数组的边界检查, 但至少我们只做了一次检查


不在这个版本中,我怀疑他们是否会添加它。

我没有使用它来了解它是否适用/如何适用,但请查看。

有关让编译器为您删除边界检查的一些方法,请参阅。基本上,您需要以这样一种方式编写循环,即编译器知道索引将在边界内。如果它知道它将在边界内,那么当您在发布模式下运行而不进行调试时,JIT编译器将为您删除边界检查。

您指向的MSDN文章提供了一个非常有趣的阅读:-)我也这么认为,因为它是关于CLR的,所以它应该与语言无关。这不是我每天都做的事情,但F#允许您在代码中编写CLR文本,我打赌有一种方法可以通过它执行不安全的指针操作。