0

私はArrayListのオブジェクトを持っています。これらのオブジェクトのいくつかは、このクラスに属します:

public class NewCompactSimilar
{
    public List<int> offsets;
    public List<String> words;
    public int pageID;

    public NewCompactSimilar()
    {
        offsets = new List<int>();
        words = new List<string>();          
    }
}

ただし、リストには他のクラスのオブジェクトを含めることもできます。

ArrayListmy オブジェクトと同一のオブジェクトがmy に含まれているかどうかを確認する必要があります。

それで、どうすればそれを行うことができますか?

4

2 に答える 2

1
if (words.Contains(myObject))

ArrayListにはContainsというメソッドがあり、オブジェクトが現在の参照と同じ参照を持っているかどうかをチェックします。値が同じであるが参照が異なるかどうかを確認する場合は、次のコードを作成する必要があります。

private bool GetEqual(String myString)
{
    foreach (String word in words)
    {
         if (word.Equals(myString))
            return true;
    }
    return false;
}

私はこれがそれであることを願っています:)

于 2012-12-16T22:36:59.103 に答える
1

リストがあなたArrayListであり、アイテムがNewCompactSimilarあなたが探しているものです:

list.OfType<NewCompactSimilar>().
                FirstOrDefault(o => o.offsets == item.offsets &&
                o.words == item.words &&
                o.pageID == item.pageID);

詳細な等価比較を実行するには、次のメソッドを実装します。

public bool DeepEquals(NewCompactSimilar other)
{
    return offsets.SequenceEqual(other.offsets) &&
            words.SequenceEqual(other.words) &&
            pageID == other.pageID;
}

次に、次の LINQ チェーンを使用します。

list.OfType<NewCompactSimilar>().
                FirstOrDefault(o => o.DeepEquals(item));
于 2012-12-16T22:40:06.553 に答える