Opc.Ua.Server.MonitoredItem.Equals C# (CSharp) Method

Equals() protected static method

Checks if the two values are equal.
protected static Equals ( object value1, object value2, DeadbandType deadbandType, double deadband, double range ) : bool
value1 object
value2 object
deadbandType DeadbandType
deadband double
range double
return bool
        protected static bool Equals(object value1, object value2, DeadbandType deadbandType, double deadband, double range)
        {
            // check if reference to same object.
            if (Object.ReferenceEquals(value1, value2))
            {
                return true;
            }
            
            // check for invalid values.
            if (value1 == null || value2 == null)
            {
			    return value1 == value2;
            }
            
            // check for type change.
            if (value1.GetType() != value2.GetType())
            {
			    return false;
            }

            // check if values are equal.
            if (value1.Equals(value2))
            {
                return true;
            }

            // check for arrays.
            Array array1 = value1 as Array;
            Array array2 = value2 as Array;

            if (array1 == null || array2 == null)
            {
                // nothing more to do if no deadband.
                if (deadbandType == DeadbandType.None)
                {
			        return false;
                }

                // check deadband.
                return !ExceedsDeadband(value1, value2, deadbandType, deadband, range);
            }
            
            // compare lengths.
            if (array1.Length != array2.Length)
            {
			    return false;
            }

            // compare each element.
            bool isVariant = array1.GetType().GetElementType() == typeof(Variant);

            for (int ii = 0; ii < array1.Length; ii++)
            {
                object element1 = array1.GetValue(ii);
                object element2 = array2.GetValue(ii);

                if (isVariant)
                {
                    element1 = ((Variant)element1).Value;
                    element2 = ((Variant)element2).Value;
                }

                if (!Equals(element1, element2, deadbandType, deadband, range))
                {
                    return false;
                }
            }

            // must be equal.
            return true;
        }