泛型怎么用啊? 你把a也定义成泛型试试~别把a定义成intT a; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 弄了N久没出来哎http://www.baidu.com/s?wd=%C1%BD%B8%F6%B7%BA%D0%CD%CA%FD%BE%DD%D4%F5%D1%F9%B1%C8%BD%CF&cl=3希望对你有帮助我百度了一下~ private void CompareData<T>(T[] datas,ref T Max,ref T Min) where T:IComparable { Max = datas[0]; Min = datas[0]; for (int i = 0; i < datas.Length; i++) { if(Max.CompareTo(datas[i])<0) Max=datas[i]; if (Min.CompareTo(datas[i])>0) Min = datas[i]; } }..... CompareData<int>(IntArray, ref MaxInt, ref MinInt); //调用泛型方法..... 还是没有解决问题:写一个泛型的方法求一个数的绝对值: static T Abs <T> (T a) //这里以泛型方法为例,不写泛型类了 { return a> 0?a:-a; } 编译错误为: 1.运算符“> ”无法应用于“T”和“int”类型的操作数 2.运算符“-”无法应用于“T”类型的操作数 c++中并没有这样的问题 请问这个方法该怎么写呢? 你要使用Comparer<>来代替你的 > 比较运算符,或者自己实现一个Comparer可以看看我的文章 http://blog.csdn.net/fuadam/archive/2007/12/14/1935872.aspx然后你不能直接跟0比较,因为.net是运行时判定的他不知道这时候T到底是什么.所以你要使用default(T)来得到T类型的默认值,如 int类型就是0.如果你使用自定义类型就需要自己编写Comparer了.然后你需要个delegate来取代operator-,因为c#下不能之间调用操作符函数.完整代码如下:public delegate T OP_Inverter<T>(T t); //非操作public static T abc<T>(T t, OP_Inverter<T> inverter) { int flag = Comparer<T>.Default.Compare(t, default(T)); //得到比较结果 if (flag < 0) return inverter(t); //小于就取非 else return t; }//调用代码abc(-5.024, delegate(double d) { return 0 - d; });是不死超级麻烦?你就不该用泛型做这种事,直接函数重载不得了. 这当然不能比因为并不知道T是不是int 求助如何使用WPF控件自适应宽度 如何使用C# listview控件显示文件夹内的文件名及路径???急求! VS可以在启动时,不显示开始页吗? 请问在winfrom中建立一个线程类后,如何在线程类中修改winfrom中的控件? 急求XDE for vs.net 2003 的教程 DataGrid 怎样Dataset 配合使用 在C#里如何实现 省 市 两个SQL表自然连接后,C#如何访问其点成员? 用VS 2005 读SharePoint当前用户名 调用API的疑难,高分请教 如何实现类似于QQ宠物社区的效果? 手机上开发的程序怎么检测手机正在上传或下载数据?答对了给100分!!!!
希望对你有帮助我百度了一下~
private void CompareData<T>(T[] datas,ref T Max,ref T Min) where T:IComparable
{
Max = datas[0];
Min = datas[0];
for (int i = 0; i < datas.Length; i++)
{
if(Max.CompareTo(datas[i])<0)
Max=datas[i];
if (Min.CompareTo(datas[i])>0)
Min = datas[i];
}
}..... CompareData<int>(IntArray, ref MaxInt, ref MinInt); //调用泛型方法
.....
写一个泛型的方法求一个数的绝对值:
static T Abs <T> (T a) //这里以泛型方法为例,不写泛型类了
{
return a> 0?a:-a;
} 编译错误为:
1.运算符“> ”无法应用于“T”和“int”类型的操作数
2.运算符“-”无法应用于“T”类型的操作数 c++中并没有这样的问题 请问这个方法该怎么写呢?
{
int flag = Comparer<T>.Default.Compare(t, default(T)); //得到比较结果 if (flag < 0)
return inverter(t); //小于就取非
else
return t;
}
//调用代码
abc(-5.024, delegate(double d)
{
return 0 - d;
});
是不死超级麻烦?你就不该用泛型做这种事,直接函数重载不得了.