相关疑难解决方法(0)

F#从C#中区分联盟使用

使用C#中的F#Discriminated Unions的最佳方法是什么?

我一直在深入研究这个问题,我可能找到了最简单的方法,但由于它相当复杂,可能还有其他一些我看不到的东西......

有一个有区别的联盟,例如:

type Shape =
    | Rectangle of float * float
    | Circle of float
Run Code Online (Sandbox Code Playgroud)

我发现C#的用法是(避免使用变量,使类型明显):

Shape circle = Shape.NewCircle(5.0);
if (circle.IsCircle)
{
    Shape.Circle c = (Shape.Circle)circle;
    double radius = c.Item;
}
Run Code Online (Sandbox Code Playgroud)

在C#中,NewXXXX静态方法总是创建Shape类的对象,还有一种方法IsXXXX来检查对象是否属于该类型; 当且仅当它是,它可以转换为Shape.XXXX类,并且只有它的项目可访问; Shape.XXXX类的构造函数是内部的,即无法访问.

有人知道从一个受歧视的联盟获取数据的更简单的选择吗?

c# f# c#-to-f#

16
推荐指数
2
解决办法
4484
查看次数

标签 统计

c# ×1

c#-to-f# ×1

f# ×1