2011-05-19 65 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接口比較兩個不同類型的對象。

相關問題