栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否存在针对“实数”类型的C#通用约束?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否存在针对“实数”类型的C#通用约束?[重复]

您不能定义这样的约束,但是可以在运行时检查类型。但是,这不会帮助您进行计算。

如果要进行计算,则可以选择如下所示:

class Calculations<T, S> where S: Calculator<T>, new(){    Calculator<T> _calculator = new S();    public T Square(T a)    {        return _calculator.Multiply(a, a);    }}abstract class Calculator<T>{    public abstract T Multiply(T a, T b);}class IntCalculator : Calculator<int>{    public override int Multiply(int a, int b)    {        return a * b;    }}

同样,定义

FloatCalculator
和所需的任何操作。它的速度不是特别快,尽管比C#4.0
dynamic
构造要快。

var calc = new Calculations<int, IntCalculator>();var result = calc.Square(10);

副作用是,只有在

Calculator
传递给它的类型具有匹配的
Calculator<T>
实现时,您才能实例化,因此不必进行运行时类型检查。

这基本上就是海尔斯伯格在本次采访中所指的话题。就我个人而言,我仍然希望看到某种基本类型:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470667.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号