/// <summary>确定指定的 <see cref="T:System.Security.AccessControl.GenericAce" /> 对象是否等同于当前的 <see cref="T:System.Security.AccessControl.GenericAce" />。</summary>
/// <returns>如果指定的 <see cref="T:System.Security.AccessControl.GenericAce" /> 对象等于当前的 <see cref="T:System.Security.AccessControl.GenericAce" /> 对象,则为 true;否则为 false。</returns>
/// <param name="o">要与当前 <see cref="T:System.Security.AccessControl.GenericAce" /> 对象进行比较的 <see cref="T:System.Security.AccessControl.GenericAce" /> 对象。</param>
public override sealed bool Equals(object o)
{
if (o == null)
{
return(false);
}
GenericAce genericAce = o as GenericAce;
if (genericAce == (GenericAce)null || this.AceType != genericAce.AceType || this.AceFlags != genericAce.AceFlags)
{
return(false);
}
int binaryLength1 = this.BinaryLength;
int binaryLength2 = genericAce.BinaryLength;
if (binaryLength1 != binaryLength2)
{
return(false);
}
byte[] binaryForm1 = new byte[binaryLength1];
byte[] binaryForm2 = new byte[binaryLength2];
this.GetBinaryForm(binaryForm1, 0);
genericAce.GetBinaryForm(binaryForm2, 0);
for (int index = 0; index < binaryForm1.Length; ++index)
{
if ((int)binaryForm1[index] != (int)binaryForm2[index])
{
return(false);
}
}
return(true);
}