Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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# 如何在.NET标准2.0中的F中定义ref结构?_F#_Ref Struct - Fatal编程技术网

F# 如何在.NET标准2.0中的F中定义ref结构?

F# 如何在.NET标准2.0中的F中定义ref结构?,f#,ref-struct,F#,Ref Struct,当时,有人说: F功能集由以下部分组成: [……] 生成IsByRefLike结构的能力—此类结构的示例:Span 如何生产这些类型?我尝试了[]属性,但在.NET Standard 2.0中找不到该属性。该属性在System.Runtime.CompilerServices中找到 菲利普·卡特在大约21分钟内谈到了这一点 该属性可用于.NET Core和.NET Framework,但不适用于.NET Standard 2.0。该属性可在System.Runtime.CompilerServi

当时,有人说:

F功能集由以下部分组成:

[……]

生成IsByRefLike结构的能力—此类结构的示例:Span

如何生产这些类型?我尝试了[]属性,但在.NET Standard 2.0中找不到该属性。

该属性在System.Runtime.CompilerServices中找到

菲利普·卡特在大约21分钟内谈到了这一点

该属性可用于.NET Core和.NET Framework,但不适用于.NET Standard 2.0。

该属性可在System.Runtime.CompilerServices中找到

菲利普·卡特在大约21分钟内谈到了这一点


它适用于.NET核心和.NET框架,但不适用于.NET标准2.0。

从技术上讲,这不是答案

首先,根据规范,IsByRefLike是针对编译器的,而不是针对开发人员使用的:

第二,当我们确实想要从编译器中得到一些东西时,我们必须理解我们想要从编译器中得到什么。所以一个正确的问题可能是:我需要ABC,因为我需要做XYZ,其中ABC将是与IsByRefLike相关的东西,然后XYZ将是基于IsByRefLike的东西。这个问题并不能解释为什么需要IsByRefLike

我认为,在考虑使用/不使用哪种语言功能时,应该始终考虑最简单的方法:我们真的需要某种特定的语言功能来完成我们所需要的吗?想到F Option.bind:如果函数是一个单行程序,那么Option.bind就很棒了。但是,如果有一些如何解析结果的树,那么最好不使用Option.bind显式地进行解析

因此,问题是:

你真的需要IsByRefLike吗? 如果你认为你需要的话,请你举一个你真正需要它的地方的例子。
从技术上讲,这不是一个答案

首先,根据规范,IsByRefLike是针对编译器的,而不是针对开发人员使用的:

第二,当我们确实想要从编译器中得到一些东西时,我们必须理解我们想要从编译器中得到什么。所以一个正确的问题可能是:我需要ABC,因为我需要做XYZ,其中ABC将是与IsByRefLike相关的东西,然后XYZ将是基于IsByRefLike的东西。这个问题并不能解释为什么需要IsByRefLike

我认为,在考虑使用/不使用哪种语言功能时,应该始终考虑最简单的方法:我们真的需要某种特定的语言功能来完成我们所需要的吗?想到F Option.bind:如果函数是一个单行程序,那么Option.bind就很棒了。但是,如果有一些如何解析结果的树,那么最好不使用Option.bind显式地进行解析

因此,问题是:

你真的需要IsByRefLike吗? 如果你认为你需要的话,请你举一个你真正需要它的地方的例子。
谢谢你的回答!我已经尝试过了,但不幸的是,这个属性在.NETCore中不存在。我将改变我问题的措辞。事实上,它在.NET标准2.0中不可用,仅在.NET核心和.NET框架中可用。不过,它已被宣布包含在.NET标准2.1中。谢谢您的回答!我已经尝试过了,但不幸的是,这个属性在.NETCore中不存在。我将改变我问题的措辞。事实上,它在.NET标准2.0中不可用,仅在.NET核心和.NET框架中可用。不过,它被宣布包含在.NET标准2.1中。不,我的代码没有它也行。所讨论的数据结构没有保存另一个ref struct。2.我曾考虑过使用它来强制类型保留在堆栈上,以确保安全性和正确性。@TheodoreTsirpanis我认为数据所在的位置应该是开发人员最不关心的,除非出于某种原因明确需要它。我给了F个任务来对数百万个元素的列表进行排序,它做得很好。所以,我建议你忘记这个属性,除非你真的需要它。不,我的代码没有它也行。所讨论的数据结构没有保存另一个ref struct。2.我曾考虑过使用它来强制类型保留在堆栈上,以确保安全性和正确性。@TheodoreTsirpanis我认为数据所在的位置应该是开发人员最不关心的,除非出于某种原因明确需要它。我给了F个任务来对数百万个元素的列表进行排序,它做得很好。所以,我建议你忘记这个属性,除非你真的需要它。
open System.Runtime.CompilerServices

[<Struct; IsByRefLike>]
type Apa =
    { A: Span<int>
      B: int }