0

我想写一些这样的代码:

if (obj.IsComparableTo(integer))
    Console.Write("successed");

这可能吗?如果没有,是否有另一种方法来确定这一点?

4

4 回答 4

2

根据您所说的可比性,可能是:

var comparable = obj as IComparable<int>;
if(comparable != null) Console.Write("successed");

但是,这仅考虑了接口,这很少见。大多数隐式转换将更难检查。如果您添加更多上下文,也许更合适的解决方案将更容易发现。

于 2011-05-19T09:19:14.107 回答
1

您的对象必须实现接口IComparable<int>

public class Foo : IComparable<int>
{
}
于 2011-05-19T09:21:47.370 回答
1

IComparable除非它们实现了接口,否则无法比较两种不同类型的对象。

于 2011-05-19T09:23:18.383 回答
-3

我找到了:

        public bool isComparable<t>(object o)
        {
            try
            {
                object r = (t)o;
            }
            catch
            {
                return false;
            }
            return true;
        }

使用它:

if (isComparable<int>(32).ToString())
    Console.WriteLine("success");
else
    Console.WriteLine("fail");
于 2011-05-24T04:23:32.397 回答