v3.1中编译的联合字段的编译形式

Dan*_*iel 5 f# discriminated-union f#-3.1

首先,F#3.1规格是否可在线获取?如果是这样,那么答案应该很容易找到.

我不知道是否与识别联合的编译形式命名字段(在3.1加)将包括与字段的名称属性,而不是通常的Item1,Item2...性质.

Tom*_*cek 3

据我所知,规范还没有出来,所以唯一的判断方法就是尝试一下。我安装了 VS 2013 RC,所以我想我可以使用这个联合进行检查:

type Expression = 
  | Add of Left:Expression * Right:Expression
  | Constant of number:int
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它确实生成了命名属性,这些属性可以很好地在 C# 中使用:

在此输入图像描述

事实上,它也在构造函数的参数中使用了该名称:

在此输入图像描述

如果您将它们用于 C# 互操作性,那么您可能需要在 中写入联合成员名称PascalCase,因为如果您使用小写名称,编译器不会自动将属性名称大写(但有趣的是,它确实使用小写字母)参数的名称)。