C# Language Generics Checking equality of generic values.

Help us to keep this website almost Ad Free! It takes only 10 seconds of your time:
> Step 1: Go view our video on YouTube: EF Core Bulk Extensions
> Step 2: And Like the video. BONUS: You can also share it!


If logic of generic class or method requires checking equality of values having generic type, use EqualityComparer<TType>.Default property:

public void Foo<TBar>(TBar arg1, TBar arg2)
    var comparer = EqualityComparer<TBar>.Default;
    if (comparer.Equals(arg1,arg2)

This approach is better than simply calling Object.Equals() method, because default comparer implementation checks, whether TBar type implements IEquatale<TBar> interface and if yes, calls IEquatable<TBar>.Equals(TBar other) method. This allows to avoid boxing/unboxing of value types.

Got any C# Language Question?