网站开发demo是什么,网站建设如何包含数据库,吴江建设局网站,网页设计代码模板网站之前假设我们有一个非常复杂的数学运算方法#xff1a;public static int Calc(int x, int y) x y;但是#xff0c;上述方法只能支持int类型。如果需要传入其它数字类型#xff0c;需要再次定义#xff1a;public static double Calc(double x, double y) x y;… 之前假设我们有一个非常复杂的数学运算方法public static int Calc(int x, int y) x y;但是上述方法只能支持int类型。如果需要传入其它数字类型需要再次定义public static double Calc(double x, double y) x y;对于这种需求我们更希望采取范型的方式实现public static T CalcT(T x, T y) x y;但是运算符“”无法应用于“T”和“T”类型的操作数C# 11引用System.Runtime.Experimental NuGet 包并且在项目文件中添加EnablePreviewFeaturesTrue/EnablePreviewFeatures。定义如下方法public static T CalcT(T x, T y) where T : INumberT x y;现在无论传递何种数据类型都可正常执行Calc(4, 5);
Calc(4.0, 5.0);这是因为我们使用的是System.Runtime.Experimental下定义的数字类型int、double都继承了INumber接口而INumber接口又继承了IAdditionOperators接口定义了运算符“”:public interface IAdditionOperatorsTSelf, TOther, TResult where TSelf : IAdditionOperatorsTSelf, TOther, TResult
{public static abstract TResult operator (TSelf left, TOther right);
}这里就运用了 C# 11 提供的新特性可在接口中添加静态抽象成员。此功能的主要场景是在泛型类型中使用数学运算符因为运算符必须定义为静态抽象的除此之外也可以在接口中定义其他静态成员和静态属性public interface IDemo
{public static abstract string StaticProperty { get; set; }
}添加微信号【MyIO666】邀你加入技术交流群