C# 泛型转换
C# 泛型转换,c#,generics,delegates,C#,Generics,Delegates,目标: 我打算设计一个可以访问任何数值(int、double、byte…)的实用程序 并生成正方形 我做了什么: delegate void t<T> (T somevalues); class program { static void Main() { Console.ReadKey(true); } } class Utility { public static void Activit
目标:
我打算设计一个可以访问任何数值(int、double、byte…)的实用程序
并生成正方形
我做了什么:
delegate void t<T> (T somevalues);
class program
{
static void Main()
{
Console.ReadKey(true);
}
}
class Utility
{
public static void Activities<T>(T[] SomeValues,t<T> transformer)
{
var qry = SomeValues.Select(p => transformer(p));
}
public static T Squaring<T>(T vals)
{
return vals * vals;
}
}
委托无效t(t值);
班级计划
{
静态void Main()
{
Console.ReadKey(true);
}
}
类效用
{
公共静态无效活动(T[]值,T转换器)
{
var qry=SomeValues.Select(p=>transformer(p));
}
公共静态T平方(T VAL)
{
返回VAL*VAL;
}
}
错误:
delegate void t<T> (T somevalues);
class program
{
static void Main()
{
Console.ReadKey(true);
}
}
class Utility
{
public static void Activities<T>(T[] SomeValues,t<T> transformer)
{
var qry = SomeValues.Select(p => transformer(p));
}
public static T Squaring<T>(T vals)
{
return vals * vals;
}
}
如何派生约束或更改可以访问任何数字(int、double、byte、…)并生成正方形的代码。与Java不同。NET没有像
Number那样的通用接口,用于所有数字类型(有关于为什么的提示)。但看看这个问题,似乎有一种方法。至少在.NET 3.5中是这样。与Java不同。对于所有数字类型,NET没有像Number
这样的通用接口(有关于原因的提示)。但看看这个问题,似乎有一种方法。至少在.NET3.5中是这样。你不能。这是对.Net中泛型的常见抱怨。目前还并没有办法声明一个类型约束,将一个类型限定为“数值”值类型的子集。如果你真的想沿着这条路走下去,唯一的选择就是创建你自己的值类型,这些值类型是核心CTS数值类型的包装,并让每个值类型实现一个空的IAmNumber
接口。然后您可以让泛型方法在该接口上声明类型约束。。。但这种方法强制您在任何需要此功能的地方使用自定义数字类型,而不是内置类型 你不能。这是对.Net中泛型的常见抱怨。目前还并没有办法声明一个类型约束,将一个类型限定为“数值”值类型的子集。如果你真的想沿着这条路走下去,唯一的选择就是创建你自己的值类型,这些值类型是核心CTS数值类型的包装,并让每个值类型实现一个空的IAmNumber
接口。然后您可以让泛型方法在该接口上声明类型约束。。。但这种方法强制您在任何需要此功能的地方使用自定义数字类型,而不是内置类型 运算符被定义为类型的静态函数。在任何泛型类型中都无法访问静态函数。运算符被定义为类型的静态函数。静态函数在任何泛型类型中都不可访问