6

最近我遇到了这样的代码清单:

type MyType =
  | MyType of int

and internal MyInternal =
  | One of MyType
  | Two of MyType

我不熟悉“和内部”的用法(在第三行),我想知道像这样使用“内部类型”是否有任何区别:

type MyType =
  | MyType of int

type internal MyInternal =
  | One of MyType
  | Two of MyType

我已经对这两种形式进行了简单的试验,我看不出有什么区别。这只是写同一件事的两种不同方式吗?

4

2 回答 2

5

在这种情况下,and关键字将用于定义相互递归的类型 MyTypeMyInternal. 由于MyTypeMyInternal不是相互递归的,因此and不需要 。

正如 MSDN 页面所述:

and 关键字替换除第一个定义之外的所有类型关键字

所以定义是等价的。

于 2013-06-10T20:19:39.053 回答
3

不,您建议的代码肯定更惯用。

type T = ...
and U = ...

通常仅在类型相互递归时使用。将它与内部类型一起使用会更加奇怪,因为第一种类型的构造函数也需要内部化:

type T = internal | T of U
and internal U = | U of T
于 2013-06-10T20:19:15.400 回答