gpt4 book ai didi

c# - 可以将 C# 扩展方法添加到 F# 类型吗?

转载 作者:行者123 更新时间:2023-11-30 13:10:38 26 4
gpt4 key购买 nike

我有某人的 F# 库,里面有一个类型:

module HisModule

type hisType {
a : float;
b : float;
c : float;
}

我在C#中使用它,我想给它添加一个“ToString()”方法,以方便调试。

但以下似乎不起作用:

public static class MyExtensions
{
public static string ToString(this HisModule.hisType h)
{
return String.Format("a={0},b={1},c={2}", h.a, h.b, h.c);
}
}
....
var h = new hisType();
Console.WriteLine(h.ToString()); // prints "HisModule+hisType"

为什么不呢?

最佳答案

正如其他人所指出的,对象上的 ToString 始终比您的扩展方法更匹配。您可能应该更改扩展方法的签名;更改名称可能是正确的方法。

另外:你说这个东西的目的是方便调试。在那里覆盖 ToString 可能是错误的事情; ToString 可能用于除调试之外的其他用途。我会倾向于制作我自己的特别命名的方法,其名称清楚地反射(reflect)了该方法的目的。

如果您正在创建一个新类型并希望在调试器中有特殊的显示行为,最简单的方法是使用 Debugger Display Attributes .

如果你真的想以一种有趣的方式显示复杂的数据结构,考虑写一个 Debugger Visualizer .

关于c# - 可以将 C# 扩展方法添加到 F# 类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8333212/

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