加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:50:38 所属栏目:百科 来源:网络整理
导读:我有一个人的F#库,里面有一个类型: module HisModuletype hisType { a : float; b : float; c : float;} 我在C#中使用它,我想为它添加一个“ToString()”方法,以便于调试. 但以下似乎不起作用: public static class MyExtensions{ public static string To
我有一个人的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"

任何想法为什么不呢?

解决方法

你的问题的答案是“是”.但是,您的示例不成功,因为方法解析在找到object.ToString()时成功,因此编译器永远不会查找扩展方法.尝试使用其他名称:

public static class MyExtensions 
{ 
    public static string Foo(this HisModule.hisType h) 
    { 
        return String.Format("a={0},h.c); 
    } 
} 

....   
var h = new hisType();   
Console.WriteLine(h.Foo());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读