当前位置:  开发笔记 > 编程语言 > 正文

如何比较相同但不受约束的泛型类型的两个元素是否相等?

如何解决《如何比较相同但不受约束的泛型类型的两个元素是否相等?》经验,为你挑选了2个好方法。

你尝试过这样的事吗?

public class Example
{
    private TValue _value;
    public TValue Value
    {
        get { return _value; }
        set
        {

            if (!object.Equals(_value, value))
            {
                _value = value;
                OnPropertyChanged("Value");
            }
        }
    }
}

请注意,这将导致值类型的拳击惩罚. (4认同)


Jon Skeet.. 7

三种选择:

限制TValue实现IEquatable然后调用x.Equals(y)

取另一个类型参数IEqualityComparer并使用它

使用EqualityComparer.Default进行比较

您总是可以混合和匹配选项2和3,当然 - 默认为默认比较器,但也允许提供特定的比较器.



1> Sergiu Damia..:

你尝试过这样的事吗?

public class Example
{
    private TValue _value;
    public TValue Value
    {
        get { return _value; }
        set
        {

            if (!object.Equals(_value, value))
            {
                _value = value;
                OnPropertyChanged("Value");
            }
        }
    }
}


请注意,这将导致值类型的拳击惩罚.

2> Jon Skeet..:

三种选择:

限制TValue实现IEquatable然后调用x.Equals(y)

取另一个类型参数IEqualityComparer并使用它

使用EqualityComparer.Default进行比较

您总是可以混合和匹配选项2和3,当然 - 默认为默认比较器,但也允许提供特定的比较器.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有