如何避免列表中的重复值使用C#统一

时间:2017-11-06 20:19:42

标签: c# unity3d c#-4.0 c#-3.0 unity5

我是团结的新手并且使用C#,实际上我是python开发人员我尝试制作一个只能包含唯一值的列表,如果有一些重复值,它将不允许进入列表

List<int> iList = new List<int>();
    iList.Add(2);
    iList.Add(3);
    iList.Add(5);
    iList.Add(7);

list = [2,3,5,7]

**在python中我们这样做是为了避免重复列表**

if(iList.indexof(value)!=-1){
iList.append(value)
}

但是我们应该在C#中做些什么才能获得非常相似的结果谢谢 您的努力将受到高度赞赏

4 个答案:

答案 0 :(得分:8)

C#List有类似的方法: if (!iList.Contains(value)) iList.Add(value);

或者您可以使用HashSet<int>。在那里你不需要添加任何条件:

var hasSet = new HashSet<int>(); 
hashSet.Add(1);
hashSet.Add(1);

答案 1 :(得分:5)

**在C#中我们(可以)这样做是为了避免重复列表**

if (iList.IndexOf(value) == -1 ) {
    iList.Add(value);
}

答案 2 :(得分:3)

HashSet将确保您只有一个任何对象的实例。如果你想拥有一个与对象本身不同的键,或者是一个词典。字典再次不允许重复键。

如果你试图复制一个HashSet,它就不会抛出异常而不会添加它。

字典会抛出重复的键异常。

答案 3 :(得分:2)

考虑构建您自己的列表类型,它永远不会添加重复项

public class NoDuplicatesList<T> : List<T>
{
      public override Add(T Item) 
      {
         if (!Contains(item))
                base.Add(item);
      } 
}