自定义类对象列表上的多个.Contains(...)

时间:2019-07-18 15:22:21

标签: c#

我想在Person对象列表上有多个.Contains(...)方法,特别是.Contains([Person]).Contains([int])类似于我可以拥有.Equals([Person])和{{ 1}}。 .Equals([int])是问题所在,因为int是.Contains([int])的无效参数。

人员班

.Contains(...)

这就是我正在做的

private class Person
{
    private int number;
    private string name;

    public Person(int number, string name)
    {
        this.number = number;
        this.name = name;
    }

    public override bool Equals(object obj)
    {
        if (obj is int) return Equals((int) obj);
        if (obj is Person) return Equals((Person) obj);
        return false;
    }

    public bool Equals(int otherNumber)
    {
        return number == otherNumber;
    }

    public bool Equals(Person otherPerson)
    {
        if (number != otherPerson.number) return false;
        if (name != otherPerson.name) return false;
        return true;
    }
}

2 个答案:

答案 0 :(得分:4)

您可以使用Enumerable.Any Method

  

确定序列中的任何元素是否存在或满足条件。

您没有说<!-- added an "id" to the form element to easily select it with "JavaScript" --> <form id="my-form" action="https://example.com/" method="GET"> <input type="text" name="username" required> <br> <input type="submit" value="go"> </form> <!-- the "div#countdown" will have the count down till redirection happens, also I added some styling to it to be more realistic in this example --> <div id="countdown" class="overlay"> <p>You have to wait <span class="count">10</span> seconds before redirecting...</p> </div>应该做什么,但是我假设如果有一个Contains(int)的{​​{1}}对于给定的{{ 1}}。

Person

如果您想通过称为Equals(int)的方法来调用它,可以使用Extension Method

int

答案 1 :(得分:0)

我认为您正在将两种类型的检查与单个列表混合使用。首先,您正在检查具有工作状态的人对象contains,因为该列表属于Person类型,而您正尝试在1列表中检查persons类型为{ {1}}。 您需要更改类似int

的内容