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

csdn网速很慢 2014-10-25 04:52:10
一般 void func<T>(T t){}
public static A operator+(A self,T value){} 这个T 搁哪儿定义啊 ??
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用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)
        {
            ................
        }
    }
《展现C#》 电子书 全第一章 C# 简介 欢迎您加入 C#的世界! 这一章将把您引进 C#的天地,并回答一些相关的问题,如:您为什么要使用 C#,C++和 C#的主要 有什么不同点,以及为什么 C#使开发更容易而且还使您感到很有趣。 为什么是另外一种编程语言? 必须回答的一个问题:当您已经使用 C++或 VB 从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企 业计算领域,C#将会变成为用于编"下一代窗口服务"(Next Generation Windows Services,简为 NGWS )应用程序的主要语 言。这一章将对用参数请求提供支持,并陈列了 C#的一些功能。这一章会使您开胃的。 C#语言自 C/C++演变而来。但是,它现代、简单、完全面向对象和类型安全。如果您是 C/C++程序员,学习曲线将会很平坦。 许多 C#语句直接借用您所喜爱的语言,包括表达式和操作符。假如不仔细看,简直会把它当成 C++。 关于 C#重要的一点:它是现代的编程语言。它简化和现代化了 C++在类、名字空间、方法重载和异常处理等领域。屏弃 了 C++的复杂性,使它更易用、更少出错。 对 C#的易用有贡献的是减少了 C++的一些特性,不再有宏、模板和多重继承。特别对企业开发者来说,上述功能只会产生 更多的麻烦而不是效益。 使编程更方便的新功能是严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功能的目标都是瞄准 了开发面向组件的软件。 在继续呈现出更多的功能之前,我想停下来并在下面说明 C#至关重要的各种要素。 简单 现代 面向对象 类型安全 版本控制 兼容 灵活 简单 C#具有C++所没有的一个优势就是学习简单。该语言首要的目标就是简单。很
欢迎您加入C#的世界! 这一章将把您引进C#的天地,并回答一些相关的问题,如:您为什么要使用C#,C++和C#的主要有什么不同点,以及为什么C#使开发更容易而且还使您感到很有趣。 为什么是另外一种编程语言?   必须回答的一个问题:当您已经使用C++或VB从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,C#将会变成为用于编"下一代窗口服务"(Next Generation Windows Services,简为NGWS )应用程序的主要语言。这一章将对用参数请求提供支持,并陈列了C#的一些功能。这一章会使您开胃的。   C#语言自C/C++演变而来。但是,它现代、简单、完全面向对象和类型安全。如果您是C/C++程序员,学习曲线将会很平坦。许多C#语句直接借用您所喜爱的语言,包括表达式和操作符。假如不仔细看,简直会把它当成C++。   关于C#最重要的一点:它是现代的编程语言。它简化和现代化了C++在类、名字空间、方法重载和异常处理等领域。摒弃了C++的复杂性,使它更易用、更少出错。   对C#的易用有贡献的是减少了C++的一些特性,不再有宏、模板和多重继承。特别对企业开发者来说,上述功能只会产生更多的麻烦而不是效益。   使编程更方便的新功能是严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功能的目标都是瞄准了开发面向组件的软件。
欢迎您加入C#的世界! 这一章将把您引进C#的天地,并回答一些相关的问题,如:您为什么要使用C#,C++和C#的主要有什么不同点,以及为什么C#使开发更容易而且还使您感到很有趣。 为什么是另外一种编程语言?  必须回答的一个问题:当您已经使用C++或VB从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,C#将会变成为用于编"下一代窗口服务"(Next Generation WindowsServices,简为NGWS )应用程序的主要语言。" 这一章将对用参数请求提供支持,并陈列了C#的一些功能。这一章会使您开胃的。  C#语言自C/C++演变而来。但是,它现代、简单、完全面向对象和类型安全。如果您是C/C++程序员,学习曲线将会很平坦。许多C#语句直接借用您所喜爱的语言,包括表达式和操作符。假如不仔细看,简直会把它当成C++。  关于C#最重要的一点:它是现代的编程语言。它简化和现代化了C++在类、名字空间、方法重载和异常处理等领域。屏弃了C++的复杂性,使它更易用、更少出错。  对C#的易用有贡献的是减少了C++的一些特性,不再有宏、模板和多重继承。特别对企业开发者来说,上述功能只会产生更多的麻烦而不是效益。  使编程更方便的新功能是严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功能的目标都是瞄准了开发面向组件的软件。

110,533

社区成员

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

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

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