internal static bool Equal()

in src/PSRule.Rules.Azure/Data/Template/ExpressionHelpers.cs [251:279]


    internal static bool Equal(object o1, object o2)
    {
        // One null
        if (IsNull(o1) || IsNull(o2))
            return IsNull(o1) && IsNull(o2);

        // Arrays
        if (o1 is Array array1 && o2 is Array array2)
            return SequenceEqual(array1, array2);
        else if (o1 is Array || o2 is Array)
            return false;

        // String and int
        if (TryString(o1, out var s1) && TryString(o2, out var s2))
            return s1 == s2;
        else if (TryString(o1, out _) || TryString(o2, out _))
            return false;
        else if (TryLong(o1, out var i1) && TryLong(o2, out var i2))
            return i1 == i2;
        else if (TryLong(o1, out var _) || TryLong(o2, out var _))
            return false;

        // JTokens
        if (o1 is JToken t1 && o2 is JToken t2)
            return JTokenEquals(t1, t2);

        // Objects
        return ObjectEquals(o1, o2);
    }