本文整理汇总了C#中Delegate.Equals方法的典型用法代码示例。如果您正苦于以下问题:C# Delegate.Equals方法的具体用法?C# Delegate.Equals怎么用?C# Delegate.Equals使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Delegate
的用法示例。
在下文中一共展示了Delegate.Equals方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RemoveImpl
protected virtual Delegate RemoveImpl(Delegate d)
{
if (d.Equals(this))
{
return null;
}
return this;
}
示例2: RemoveImpl
protected override sealed Delegate RemoveImpl(Delegate value)
{
MulticastDelegate v = value as MulticastDelegate;
if (v == null)
return this;
if (v._invocationList == null)
{
MulticastDelegate[] invocationList = _invocationList;
if (invocationList == null)
{
if (this.Equals(value))
return null;
}
else
{
int invocationCount = (int)_invocationCount;
for (int i = invocationCount; --i >= 0; )
{
if (value.Equals(invocationList[i]))
{
if (invocationCount == 2)
{
// Special case - only one value left, either at the beginning or the end
return (Delegate)invocationList[1 - i];
}
else
{
MulticastDelegate[] list = DeleteFromInvocationList(invocationList, invocationCount, i, 1);
return NewMulticastDelegate(list, invocationCount - 1);
}
}
}
}
}
else
{
MulticastDelegate[] invocationList = _invocationList;
if (invocationList != null)
{
int invocationCount = (int)_invocationCount;
int vInvocationCount = (int)v._invocationCount;
for (int i = invocationCount - vInvocationCount; i >= 0; i--)
{
if (EqualInvocationLists(invocationList, v._invocationList, i, vInvocationCount))
{
if (invocationCount - vInvocationCount == 0)
{
return null;
}
else if (invocationCount - vInvocationCount == 1)
{
return (Delegate)invocationList[i != 0 ? 0 : invocationCount - 1];
}
else
{
MulticastDelegate[] list = DeleteFromInvocationList(invocationList, invocationCount, i, vInvocationCount);
return NewMulticastDelegate(list, invocationCount - vInvocationCount);
}
}
}
}
}
return this;
}