[英]Properly implement F# Unit in C#
这个问题与这个<\/a>问题中的 C#\/F# 兼容性无关。
我想知道实现
F# Unit<\/a>之类的类型而不是使用
void<\/code>的正确方法。
显然我会丢弃这个结果,并且不会将这种类型暴露给外界。
想知道一个空类是否可以扮演这个角色。
internal class Unit
{
}
我不确定从 C# 定义Unit
以供使用的最佳方法是什么。 它可能与 F# 中的做法不同(因为在 F# 中,编译器以某种方式隐藏了用法)。
但是,您实际上可以在核心库中找到 F# unit
的实现:
以下是有关 F# unit
实现的要点
GetHashCode
和Equals
IComparable
并且unit
类型的所有值都相等unit
值。 它也没有默认实例(与 Rx 单元不同),因此在 F# 中,所有单元值实际上都表示为null
。 但是,语言/编译器通常会隐藏这一事实。 因此,听起来 F# 中的唯一区别是它使用null
值。 如果您想明确使用unit
,这可能不是最佳选择。 但是,如果您有Unit.Default
那么您最终会定义一个具有两个可能值的类型,因为它可以是Unit.Default
或null
(因此它不是真正的单位!)
System.ValueTuple
(不带泛型参数)在 C# 中是非常重要的单元。 源代码是开放的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.