c#中请用尽可能简洁的的方式编写数组去重方法
时间: 2024-10-09 08:11:50 浏览: 12
在C#中,你可以使用`HashSet<T>`类来简洁地实现数组去重,因为`HashSet`不允许有重复元素。以下是使用这种方法的一个简单示例:
```csharp
public static T[] RemoveDuplicates<T>(T[] array)
{
HashSet<T> hashSet = new HashSet<T>(array);
return hashSet.ToArray();
}
```
这个方法接受一个泛型数组`T[]`,将其转换为`HashSet`,然后返回一个无重复元素的新数组。注意,这种方法只适用于值类型数组,对于引用类型,需要先强制类型转换为`object[]`,然后再转换回目标类型。
如果你想要保留原始数组的类型,可以这样做:
```csharp
public static T[] RemoveDuplicatesInPlace<T>(T[] array)
{
int index = 0;
for (int i = 1; i < array.Length; i++)
{
if (!array[index].Equals(array[i]))
{
array[index + 1] = array[i];
index++;
}
}
array[index] = default(T); // 如果数组长度大于0,这里需要手动设置最后一个元素为默认值
return array;
}
```
此方法则会直接在原数组上进行去重操作,保留数组类型,适合于引用类型数组。但是效率较低,因为它需要线性搜索。