C# 操作符重载是怎么写模板?

csdn网速很慢 2014-10-25 04:52:10
一般 void func<T>(T t){}
public static A operator+(A self,T value){} 这个T 搁哪儿定义啊 ??
...全文
114 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-10-25
  • 打赏
  • 举报
回复
首先,C#根本没有“模板”。 C#泛型写法和C++的模板有些类似,但是本质完全不同。
csdn网速很慢 2014-10-25
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
把T定义在类里面 class A<T> { public static A operator+(A self,T value){} }
需要函数模板的。 仔细想想除了动态类型。 模板似乎都不能满足需求。 强类型的语法都不行吧。
threenewbee 2014-10-25
  • 打赏
  • 举报
回复
把T定义在类里面 class A<T> { public static A operator+(A self,T value){} }
csdn网速很慢 2014-10-25
  • 打赏
  • 举报
回复
哎 var 不能做参数。 这功能真是不强大啊。。。 用object效率又低。 真是麻烦啊。 一行一行老实写吧。总结得出C#缺少个预编译的元编程方法,不好用。哎
csdn网速很慢 2014-10-25
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
另外,如果你不是“那么执着”,也可以把中缀表达式变为后缀表达式(连缀形式),也同样干净:

    public class A
    {

    }

    public static class Exrensions
    {
        public static A plus<T>(this A s, T value)
        {
            ........
        }
    }
哦。 那意思就是重载操作符函数没法泛型了? 需要的是函数模板所以第一种不行。 第二种也就是一般的函数模板了。 写着写着突然想到操作符根本就不能写类型。 不能写模板好像才合理。 除非有不用写类型的模板。 哦,又头然想到C#有个var的写法。 我去研究下试试。
  • 打赏
  • 举报
回复
另外,如果你不是“那么执着”,也可以把中缀表达式变为后缀表达式(连缀形式),也同样干净:

    public class A
    {

    }

    public static class Exrensions
    {
        public static A plus<T>(this A s, T value)
        {
            ........
        }
    }
  • 打赏
  • 举报
回复
变通一下吧:
    public class A
    {

    }

    public class X<T>
    {
        public static A operator +(A s, X<T> value)
        {
            ................
        }
    }

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧