为什么在c#中重写方法时会出现这种奇怪的差异?

本文关键字:重写 方法 为什么 | 更新日期: 2023-09-27 18:14:16

想检查是否有人有线索为什么第一个方法会导致不同的效果比第二个?第一个使所谓的"轨道"变得50高,但第二个没有改变任何东西!

1)

public override CGRect TrackRectForBounds (CoreGraphics.CGRect forBounds)
{
    base.TrackRectForBounds (new CGRect (forBounds.X, forBounds.Y, forBounds.Width, 50));
    return forBounds;
}

2)

public override CGRect TrackRectForBounds (CoreGraphics.CGRect forBounds)
{
    return base.TrackRectForBounds (new CGRect (forBounds.X, forBounds.Y, forBounds.Width, 50));
}

为什么在c#中重写方法时会出现这种奇怪的差异?

代码没有显示调用方方法如何处理方法TrackRectForBounds()的返回值。

但是我想任何事情都是用返回的GCRect做的-并且有区别:方法1确实直接返回参数forBounds,而方法2返回从base.TrackRectForBounds()返回的值。

如果你这样做了:

public override CGRect TrackRectForBounds(CoreGraphics.CGRect forBounds) 
{ 
    var baseReturnObj = base.TrackRectForBounds(new CGRect(forBounds.X, forBounds.Y, forBounds.Width, 50));
    return forBounds; 
}

比较forBoundsbaseReturnObj的对象,应该很明显发生了什么