C# – Comparando Arrays

Não tem jeito. Apesar da imensa blibloteca que o .NET Framework possui, ainda não há (pelo menos até onde consegui pesquisar) um método nativo para comparação de Arrays ou Coleções.

Como esta foi uma necessidade que tive mais de uma vez em sistemas dos quais participei na construção, publicarei um método genérico para comparação de Arrays simples em C#.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/// <summary>
/// Compara dois arrays de string
/// </summary>
/// <param name="arrayA">Array 1</param>
/// <param name="arrayB">Array 2</param>
/// <returns>True se os arrays forem iguais,
/// False do contrário</returns>
public static bool ArrayCompare(string[] arrayA, string[] arrayB)
{
	if (arrayA.Length != arrayB.Length)
	{
		return false;
	}
	for (int i = 0; i < arrayA.Length; i++)
	{
		if (arrayA[i] != arrayB[i])
		{
			return false;
		}
	}
	return true;
}

O código abaixo completo mostra a utilização da função:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
 
public class testCompareArrays
{
	public static void Main(string[] args)
	{
		string[] array1 = new string[] { "a", "b", "c", "d", "e" };
		string[] array2 = new string[] { "a", "b", "c", "d", "e" };
 
		if (ArrayCompare(array1, array2))
		{
			Console.WriteLine("Os arrays são iguais");
		}
		else
		{
			Console.WriteLine("Os arrays são diferentes");
		}
	}
 
	/// <summary>
	/// Compara dois arrays de string
	/// </summary>
	/// <param name="arrayA">Array 1</param>
	/// <param name="arrayB">Array 2</param>
	/// <returns>True se os arrays forem iguais,
	/// False do contrário</returns>
	public static bool ArrayCompare(string[] arrayA, string[] arrayB)
	{
		if (arrayA.Length != arrayB.Length)
		{
			return false;
		}
		for (int i = 0; i < arrayA.Length; i++)
		{
			if (arrayA[i] != arrayB[i])
			{
				return false;
			}
		}
		return true;
	}
}

O exemplos faz uso de um array de strings, porém é simples alterá-lo para qualquer outro tipo, desde que seja nativo ou que sobrecarregue o operado ==.

Bom proveito!

Tomás

Comentários

comentários