长话短说,我在C#中拥有一个函数,该函数具有两个表示潜在原始类型(不包括布尔值)的“对象”(是类!),我想对其进行测试。
这是一个更好地解释它的代码:

public void Compare(object value1, object value2) {
    if(value1 < value2)
        //do something
    if(value1 > value2)
        // do something else...
 }


但是,您可能知道这是不可能的...有办法吗?

最佳答案

您可以通过将两个对象都投射到dynamic来完成此操作。这将导致运行时确定如何比较两个对象而不是编译器。这样,比较功能可以与使<>运算符重载的任何对象(包括基元)一起执行。

public void Compare(object value1, object value2) {
    if ((dynamic)value1 < (dynamic)value2)
        // do something
    if ((dynamic)value1 > (dynamic)value2)
        // do something else...
}

09-10 02:54
查看更多