C# 将数组类型的对象转换为 T,其中 T 是数组?

标签 c# arrays generics casting

如果我能让一个对象到数组的转换正常工作,那就太好了。

步骤:

  1. 我们从外部源传递了一个数组。该数组装在一个对象中。通常对象是 int[] 或 double[],但我们通常需要 double[]。
  2. 将其转换为类型 T 的数组。
  3. 返回转换后的类型。

对于初学者来说,这很好用

double[] r=Array.ConvertAll<int,double>((int[])o,Convert.ToDouble)

但这不是(假设 T 是“double”),例如双[] R=getValue(o);

public T[] getValue<T>(object o){
// ... some logic...
return (T[])Array.ConvertAll<int,double>((int[])o,Convert.ToDouble)

是否有可以使用的 where 约束?数组是一个“特殊对象”,因此我们不能将其用作约束条件。

这在 .net 中是否可以不借助 IL 而实现?如果我们真的求助于 IL,有可能吗?

谢谢, -史蒂文

最佳答案

这对我有用:

public T[] GetValue<T>(object o)
{
        Converter<int, T> c = new Converter<int, T>(input => (T)System.Convert.ChangeType(input, typeof(T)));
        return (T[])Array.ConvertAll<int, T>((int[])o, c);
}

希望对您有所帮助!

关于C# 将数组类型的对象转换为 T,其中 T 是数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484948/

相关文章:

java - 在返回参数中使用通用通配符类型

c# - ExecuteStoreCommand,多个插入语句产生无效字符错误

c - 为什么不能使用realloc函数来调整动态数组的堆栈大小?

c - 非可移植指针转换

java - 如何找到给定数组的大小 >= 2 的最大子数组?

c# - 为什么这个泛型方法调用不匹配?

java - Spring Data Repository Generics - 尝试获取错误的类型

c# - 将 Moq C# 代码转换为等效的 c# Microsoft Fakes 以进行单元测试

c# - 发送到多个电子邮件地址

c# - 鼠标悬停在日历控件上时的 Jquery 弹出窗口