如何检查c#中的两个值是否相等?(给定任何类型的价值)

mik*_*son 4 c# types equals

我这里有这个代码,它允许任何类型的参数:

public static void AreEqual(object expectedValue, object actualValue) {
    if (expectedValue == actualValue) {
        HttpContext.Current.Response.Write("Equal");
    } else {
        HttpContext.Current.Response.Write("Not Equal");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用几个整数调用它,它表现不佳.

AreEqual(3, 3)   // prints Not Equal
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 16

在最简单的层面:

public static void AreEqual(object expectedValue, object actualValue) {
    if (object.Equals(expectedValue,actualValue)) {
            HttpContext.Current.Response.Write("Equal");
    } else {
            HttpContext.Current.Response.Write("Not Equal");
    }
}
Run Code Online (Sandbox Code Playgroud)

或者使用泛型(支持IEquatable<T>):

public static void AreEqual<T>(T expectedValue, T actualValue) {
    if (EqualityComparer<T>.Default.Equals(expectedValue,actualValue)) {
            HttpContext.Current.Response.Write("Equal");
    } else {
            HttpContext.Current.Response.Write("Not Equal");
    }
}
Run Code Online (Sandbox Code Playgroud)