我想写出像这样的代码:我可以检查一个物体是否可以与其他类型相比?
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