我可以检查一个对象是否与其他类型具有可比性吗?

发布于 2024-11-08 13:03:10 字数 143 浏览 3 评论 0原文

我想写一些这样的代码:

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

这可能吗?如果没有,是否有其他方法可以确定这一点?

I'd like to write some code like this:

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

Is this possible? If not, is there an alternative way of determining this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

丶情人眼里出诗心の 2024-11-15 13:03:10

根据您所说的可比较的含义,也许:

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

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

Depending on what you mean by comparable, maybe:

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

However, this only accounts for the interface, which would be rare. Most implicit conversions will be harder to check for. If you add more context, maybe a more appropriate solution will be easier to spot.

痴意少年 2024-11-15 13:03:10

您的对象必须实现接口 IComparable

public class Foo : IComparable<int>
{
}

You object has to implement the interface IComparable<int>

public class Foo : IComparable<int>
{
}
梦冥 2024-11-15 13:03:10

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

It is not possible to compare two different types of objects unless they implement the IComparable interface.

风筝有风,海豚有海 2024-11-15 13:03:10

我找到了它:

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

i've found it :

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

to use it:

if (isComparable<int>(32).ToString())
    Console.WriteLine("success");
else
    Console.WriteLine("fail");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文