gpt4 book ai didi

c# - 将内部区分联合的实例从 F# 初始化为 C#

转载 作者:行者123 更新时间:2023-12-04 00:52:15 26 4
gpt4 key购买 nike

我有一个从 F# 中通过 dll 导出的可识别联合类型,用于 C#:

type Argument =
| IntValue
| FloatValue
| BoolValue of bool

在 C# 中,我可以初始化类似 Argument.NewBool​​Value(true) 的东西,但其他两种类型 IntValueFloatValue 不是类型生成的通过 F# 编译器并因此标记为内部,有没有办法在 C# 中初始化它们?

最佳答案

如果被区分的联合案例没有任何有效负载,则不会生成 NewXXX 方法。因为这种联合案例的所有实例都是相同的,所以不需要创建函数。所以改用静态属性

Argument.IntValue
Argument.FloatValue

在内部,这些属性只返回相应用例的单例实例:

internal static readonly Argument _unique_IntValue = new _IntValue();

public static Argument IntValue => _unique_IntValue;

更多有趣的细节可以观察in this decompiled snippet .

关于c# - 将内部区分联合的实例从 F# 初始化为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65684855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com