📜  c# list 仅包含唯一项 - C# (1)

📅  最后修改于: 2023-12-03 14:39:43.573000             🧑  作者: Mango

C# List 仅包含唯一项 - C#

在 C# 编程中,我们经常需要存储一组数据。C# 中的 List<T> 是一个非常常用的集合类型,它允许我们存储和操作多个相同类型的元素。

有时候,我们可能只想在列表中保留唯一的项,即不允许重复的元素。本文将介绍如何在 C# 中使用 List<T> 来实现仅包含唯一项的列表。

1. 使用 HashSet

一种简单的方法是使用 C# 中的 HashSet<T> 类型,它只存储唯一的元素。我们可以将 HashSet<T> 用作 List<T> 的底层存储,并将其封装在一个自定义类中。下面是一个示例:

using System;
using System.Collections.Generic;

public class UniqueList<T>
{
    private HashSet<T> set;
    
    public UniqueList()
    {
        set = new HashSet<T>();
    }
    
    public void Add(T item)
    {
        if (!set.Contains(item))
        {
            set.Add(item);
        }
    }
    
    // 其他方法...
}

在这个示例中,我们创建了一个名为 UniqueList<T> 的类,它封装了一个 HashSet<T> 实例。通过在 Add 方法中检查元素是否已经存在于 set 中,我们可以确保列表中只包含唯一的项。

使用该类时,可以像使用普通的 List<T> 一样添加、删除和访问元素。

2. 扩展方法

另一种方法是为 List<T> 添加扩展方法,使其具有仅包含唯一项的功能。下面是一个示例:

using System;
using System.Collections.Generic;

public static class ListExtensions
{
    public static void AddUnique<T>(this List<T> list, T item)
    {
        if (!list.Contains(item))
        {
            list.Add(item);
        }
    }
    
    // 其他方法...
}

在这个示例中,我们创建了一个扩展方法 AddUnique,它接受一个泛型参数 T,并在列表中添加一个元素,只有当该元素在列表中不存在时才进行添加。

使用该扩展方法时,可以像在普通的 List<T> 上使用 Add 方法一样添加元素,但是它会自动确保列表中只包含唯一的项。

使用示例

以下是使用以上两种方法创建仅包含唯一项的列表的示例:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        UniqueList<int> uniqueList = new UniqueList<int>();
        uniqueList.Add(1);
        uniqueList.Add(2);
        uniqueList.Add(1); // 不会重复添加
        
        List<string> list = new List<string>();
        list.AddUnique("A");
        list.AddUnique("B");
        list.AddUnique("A"); // 不会重复添加
    }
}

通过以上示例,我们展示了如何使用 UniqueList<T> 类和 AddUnique 扩展方法来创建仅包含唯一项的列表。

希望本文能帮助你在 C# 中实现仅包含唯一项的列表功能。记得灵活运用这些技巧,以提高你的编程效率和代码质量。

参考资料:

注意:以上示例仅为演示用途,你可以根据具体需求对代码进行修改和扩展。