Hola. ¿Cual es la razón que te ha llevado a publicar una pregunta sobre C#, en el foro de Visual Basic 6?
Bueno, una forma de hacer lo que pides en caso de que quieras preservar los elementos del array original sin modificar, sería desarrollar una función genérica para iterarlo de la siguiente manera:
Modo de empleo:
Resultado de ejecución:
Hay varias formas de hacerlo. También puedes utilizar un for para reemplazar los elementos del array original, o recurrir al elegante pero no muy eficiente LINQ.
EDITO: Por ejemplo:
¡Saludos!
Bueno, una forma de hacer lo que pides en caso de que quieras preservar los elementos del array original sin modificar, sería desarrollar una función genérica para iterarlo de la siguiente manera:
Código (csharp) [Seleccionar]
/// ----------------------------------------------------------------------------------------------------
/// <summary>
/// Replaces the duplicated items in the source collection using the specified value.
/// </summary>
/// ----------------------------------------------------------------------------------------------------
/// <typeparam name="T">
/// The type of the items in te collection.
/// </typeparam>
///
/// <param name="collection">
/// The source collection.
/// </param>
///
/// <param name="value">
/// The value that will be used to replace duplicated items.
/// </param>
/// ----------------------------------------------------------------------------------------------------
/// <returns>
/// The resulting <see cref="IEnumerable<T>"/>.
/// </returns>
/// ----------------------------------------------------------------------------------------------------
public static IEnumerable<T> ReplaceDuplicates<T>(T[] collection, T value) {
HashSet<T> hset = new HashSet<T>();
foreach(T item in collection) {
if (hset.Add(item)) {
yield return item;
} else {
yield return value;
}
}
}
Modo de empleo:
Código (csharp) [Seleccionar]
int[] arr = { 10, 4, 9, 11, 4, 7, 10, 30, 11, 10 };
int[] newArr = ReplaceDuplicates<int>(arr, 0).ToArray();
Console.WriteLine(string.Join(", ", newArr));
Resultado de ejecución:
Cita de: Visual Studio's Debug Window Output10, 4, 9, 11, 0, 7, 0, 30, 0, 0
Hay varias formas de hacerlo. También puedes utilizar un for para reemplazar los elementos del array original, o recurrir al elegante pero no muy eficiente LINQ.
EDITO: Por ejemplo:
Código (csharp) [Seleccionar]
int[] arr = { 10, 4, 9, 11, 4, 7, 10, 30, 11, 10 };
int[] newArr = arr.Select((a, b) => Array.IndexOf(arr, a) == b ? a : 0).ToArray();
Console.WriteLine(string.Join(", ", newArr));
¡Saludos!