1

我可以通过反射和调用(或者如果该操作有更好的名称)来获取转换运算符吗?这是主要问题,如果是,它解决了我的问题。

但是,如果有人知道以下问题的另一种解决方案:

我有很多对象变量(直到运行时的数量未知),每个都有不同的类型,但它们都是数字(双精度、整数、短)。

另一方面,我有相同数量的双变量,并且需要比较每个值。

object[] Value1; //this can be double, short or int, only known at runtime.
double[] Value2;

//I need simply to do:
(for int i = 0; i < Value1.Length, i++)
{
    (if Value1[i] == Value2[i]) //here's the problem
    //the comparison always return false, because of different types
    ....

我尝试了很多东西,包括通过反射调用的“CompareTo”方法,但它要求对象变量与包含调用的方法的实例类型相同。(不能从 double 调用并传递 int 参数,也不能从 int 调用并传递 double 参数)

因此,如果我可以将它们转换为:一种方法是从 double 转换为未知类型(为此我必须使用一些反射)另一种方法是从 object 到未知类型的两步转换,然后从该转换为 double .

限制:

  • 动态不是一个选项(旧框架)

  • Value1 项目从外部不可更改的方法中单独“作为对象”。

4

1 回答 1

1

更改Value1double[]. 如果您object要放入其中(例如short, int,double等),请使用Convert.ToDouble(value),或者如果您有已知的shortor int,它将被隐式转换为double. 然后可以将这些与 中的doubles进行比较Value2

于 2013-03-19T13:12:07.217 回答