2011-05-19 69 views
0

我想写出像这样的代码:我可以检查一个物体是否可以与其他类型相比?

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

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

+0

@Marc Gravell:我要检查cmb.Tag有一些更优化的方式? – Mohsen 2011-05-19 09:25:42

+0

这是什么意思'cmb.Tag'?可比较的= combo1.tag作为IComparable ; – 2011-05-19 09:36:56

回答

-2

我发现它:

 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"); 
2

根据你的意思是可比的,说不定什么:

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

然而,这仅仅占接口,这将是罕见的。大多数隐式转换将很难检查。如果添加更多上下文,也许更容易找到更合适的解决方案。

+0

可比较的= combo1.tag作为IComparable ;如果(可比!= null)Console.Write(“successed”);不适合我 – Mohsen 2011-05-19 09:34:30

+0

@Moshen - 好吧,既然你还没有告诉我们什么是'obj',或者你需要用“可比较的”来覆盖什么场景... – 2011-05-19 09:37:28

1

你对象必须实现该接口IComparable<int>

public class Foo : IComparable<int> 
{ 
} 
1

这是不可能的,除非他们实现IComparable接口比较两个不同类型的对象。

相关问题