J'essaye de créer une méthode utilitaire qui acceptera deux tableaux comme paramètres, les fusionner ensemble et retournera le tableau résultant. Rejeter les doublons.Comment fusionner deux tableaux de type indéfini en C# en utilisant .NET 1.1
Idéalement, les paramètres accepteraient n'importe quel type de tableau, comme int [] ou string []. J'utilise C# .NET 1.1, et n'ai donc pas accès à Generics ou Array.Resize().
Existe-t-il un meilleur moyen de fusionner deux tableaux sans connaître leur type, mais en retournant un tableau du même type?
À ce stade, le code suivant renvoie un tableau d'objet []. Je voudrais que le type de tableau retourné corresponde aux paramètres.
public static object[] MergeArrays(object[] dest, object[] src)
{
if (dest.GetType() != src.GetType())
return null; // The arrays are of different types
if (dest.Equals(src))
return dest; // Don't merge with self
// We now know there are two compatible and unique arrays
int delta = src.Length;
// Cycle through the passed materials and see if they already exist
for (int i = 0; i < src.Length; i++)
// Check to see if this material already exists
for (int j = 0; j < dest.Length; j++)
if (src[i] == dest[j])
{
// The material already exists, so we'll skip it
src[i] = null;
delta--;
break;
}
// If there are still objects to merge, increase the array size
if (delta > 0)
{
object[] = new object[dest.Length + delta];
int index;
// Copy the original array
for (index = 0; index < dest.Length; index++)
tmp[index] = dest[index];
// Add the new elements
for (int i = 0; i < src.Length; i++)
{
if (src[i] == null)
continue;
tmp[index++] = src[i];
}
dest = tmp;
}
return dest;
}
Cela fonctionne très bien. Merci! –
De rien; as-tu un meilleur nom pour 'NewMethod'? Je pense encore. – jason
Je voudrais normalement aller avec MergeCore ou MergeInner –