我想寫出像這樣的代碼:我可以檢查一個物體是否可以與其他類型相比?
if (obj.IsComparableTo(integer))
Console.Write("successed");
這可能嗎?如果沒有,是否有另外一種方法來確定這一點?
我想寫出像這樣的代碼:我可以檢查一個物體是否可以與其他類型相比?
if (obj.IsComparableTo(integer))
Console.Write("successed");
這可能嗎?如果沒有,是否有另外一種方法來確定這一點?
我發現它:
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");
根據你的意思是可比的,說不定什麼:
var comparable = obj as IComparable<int>;
if(comparable != null) Console.Write("successed");
然而,這僅僅佔接口,這將是罕見的。大多數隱式轉換將很難檢查。如果添加更多上下文,也許更容易找到更合適的解決方案。
可比較的= combo1.tag作爲IComparable
@Moshen - 好吧,既然你還沒有告訴我們什麼是'obj',或者你需要用「可比較的」來覆蓋什麼場景... – 2011-05-19 09:37:28
你對象必須實現該接口IComparable<int>
public class Foo : IComparable<int>
{
}
這是不可能的,除非他們實現IComparable
接口比較兩個不同類型的對象。
@Marc Gravell:我要檢查cmb.Tag有一些更優化的方式? – Mohsen 2011-05-19 09:25:42
這是什麼意思'cmb.Tag'?可比較的= combo1.tag作爲IComparable; –
2011-05-19 09:36:56