Feedback

C# - LINQ Erweiterung: Xor

Veröffentlicht von am 20.02.2014
(0 Bewertungen)
In LINQ gibt es zwar eine Sum-Methode, aber keine für Xor. Dieses Snippet füllt die Lücke.

Anwendungsmöglichkeiten
Eine Mögliche Anwendung ist die Ermittlung des Hashcodes eines Arrays:
array.Select(x=>x.GetHashCode()).Xor()

Dieser unterscheidet sich nicht, wenn die Elemente nicht unterschiedlich sind. Siehe auch: Testanwendung

Benötigte Namespaces
System
System.Collections.Generic
System.Linq (für weitere LINQ-Methoden)

Testanwendung
int[] a1 = { 1, 2, 3, 4 };
int[] a2 = { 1, 2, 3, 4 };
Console.WriteLine("HashCodes:");
Console.WriteLine(a1.GetHashCode());
Console.WriteLine(a2.GetHashCode());
Console.WriteLine("Xor:");
Console.WriteLine(a1.Xor());
Console.WriteLine(a2.Xor());
Console.ReadKey();
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

/// <summary>
/// Berechnet das bitweise XOR der Werte in der Liste.
/// </summary>
/// <param name="source">Die Liste von Ganzzahligen Werten.</param>
/// <returns>Die bitweise XOR verknüpfung aller Werte./returns>
public static int Xor(this IEnumerable<int> source)
{
    if (source == null)
        throw new ArgumentNullException("source");
    using (var enu = source.GetEnumerator())
    {
        enu.MoveNext();
        int result = enu.Current;//? first element

        while (enu.MoveNext())
            result ^= enu.Current;//? other elements

        return result;
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!