Type conversion C语言中的类型转换#

Type conversion C语言中的类型转换#,type-conversion,casting,Type Conversion,Casting,我试图为类型转换创建一个通用方法,该方法获取一个对象和要强制转换的对象类型 通过使用Convert.ChangeType()我可以做我想做的事情,但是它在运行时花费了太多的时间。创建我想要的泛型类的最佳方法是什么 我的旧代码是这样的 public static ConvertTo<T>(object data) where T : struct // yes the worst variable name! { // do some controls... return C

我试图为类型转换创建一个通用方法,该方法获取一个对象和要强制转换的对象类型

通过使用
Convert.ChangeType()
我可以做我想做的事情,但是它在运行时花费了太多的时间。创建我想要的泛型类的最佳方法是什么

我的旧代码是这样的

public static ConvertTo<T>(object data) where T : struct // yes the worst variable name!
{
  // do some controls...

  return Convert.ChangeType(data, typeof(T));
}
publicstaticconvertto(对象数据),其中T:struct//yes是最差的变量名!
{
//做一些控制。。。
返回Convert.ChangeType(数据,typeof(T));
}
编辑: 为了澄清

例如:;我已经执行了查询,它返回了一个DataRow。还有一列输入为decimal,我想转换为long。如果我调用这个方法,将十进制转换为long需要很多时间


此方法的T类型只能是值类型。我的意思是“T:struct”

我仍然怀疑您的性能声明。这是证据。编译并运行以下程序(在发布模式下):

使用系统;
使用系统诊断;
课堂测试
{
const int迭代次数=100000000;
静态void Main()
{
秒表sw=Stopwatch.StartNew();
十进制d=1.0m;
长总计=0;
对于(int i=0;i
在我的笔记本电脑上执行100000000次迭代需要20秒。很难相信在计算机上执行40次迭代需要8秒


换句话说,我强烈怀疑问题不在您认为的地方。

您能否更具体地说明一下“运行时花费的时间太多”。你分析过它以检查它是否是这个代码吗?是的,我分析过问题出在那个代码中。“它在运行时花费了太多的时间”,我的意思是40次调用这个方法总共需要8秒。40次调用需要8秒?我觉得这很难相信,除非你有一些自定义类型转换器涉及到这需要时间。请提供一个简短但完整的示例程序。实际上,我在另一台机器上看到了经过的时间,也许我错过了什么。当我尝试时,我没有花这么多时间。我会查一下那台机器上的密码,马上给你回电话。
using System;
using System.Diagnostics;

class Test
{
    const int Iterations = 100000000;

    static void Main()
    {
        Stopwatch sw = Stopwatch.StartNew();
        decimal d = 1.0m;
        long total = 0;
        for (int i=0; i < Iterations; i++)
        {
            long x = ConvertTo<long>(d);
            total += x;
        }
        sw.Stop();
        Console.WriteLine("Time: {0}ms", sw.ElapsedMilliseconds);
        Console.WriteLine("Total: {0}", total);
    }

    public static T ConvertTo<T>(object data) where T : struct
    {
        return (T) Convert.ChangeType(data, typeof(T));
    }
}