中易网

排序算法:C#泛型类型T约束为整数,浮点数等数字

答案:2  悬赏:0  
解决时间 2021-01-19 11:07
  • 提问者网友:蓝莓格格巫
  • 2021-01-18 22:30
排序算法:C#泛型类型T约束为整数,浮点数等数字
最佳答案
  • 二级知识专家网友:孤独的牧羊人
  • 2021-01-18 23:32
把约束的类型写在后面
where T: Int32, Int64, Float,Double{
}
追问:这样写编译通不过,我试过的
追答:C#没有这种基本数字泛型,是设计上避免了。
可以另把struct封装成class

设一个INumber接口,把Int32Number,DoubleNumber实现这个接口
方法改成SortOrdinalList(List list, INumber i);
你做模板区分struct类型的目的是为编译时去区分类型。这也是编译时区分。
其他,可以用其他的设计模式,也可以在运行时比较类型。
全部回答
  • 1楼网友:夜风逐马
  • 2021-01-19 00:15

貌似没有这种定义方法。因为class,struct,new这些是涉及到创建、引用等的重要类别,而具体的类别比如你上面的struct再细化限制似乎没意义,如果你要实现其他类型就抛出异常,那你可以在方法内部用类似下面的来判断if(typeof(T)==typeof(Int32))
追问:因为结构体(值类型)并非只有数字值类型,不能做比较判断(大于、小于、等于等判断),所以想细化,不然的话只能针对整型,浮点型,十进制型等做方法重载了,我想用泛型实现,少写点代码。
追答:那你可以换成IComparable<T>
.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息