JetBrains Rider 建议 "make parameter type Component"。为什么?

JetBrains Rider suggests "make parameter type Component". Why?

我目前正在使用 JetBrains Rider 作为 IDE。

private void RemoveAlert(int idx, Image lockImg)
{
    ...
}

在写上面的代码时,收到Rider的建议,将RemoveAlert方法的Image类型参数转换为Component。不知道为什么。

不知道这个提议是效率更高还是更习惯。有知道的请回答。

Rider 建议的屏幕截图:

我无法确切地看到你是如何使用变量的(悬停文本覆盖了一些东西)但是 ReSharper 会在你使用派生的 class 而不是它的任何一个时提出这个建议额外的功能。看起来您正在获取对其 gameObject 属性 的引用,并且如果您查看继承层次结构,Component 是具有 class 的最低级别 class =24=]:

UnityEngine.UI.Image
UnityEngine.UI.MaskableGraphic
UnityEngine.UI.Graphic
UnityEngine.EventSystems.UIBehaviour 
UnityEngine.MonoBehaviour
UnityEngine.Behaviour
UnityEngine.Component <- has gameObject property
UnityEngine.Object    <- doesn't have gameObject property

此外,如果您觉得这很烦人,可以在函数上添加以下内容:

// ReSharper disable once SuggestBaseTypeForParameter

或者您可以将其放在文件本身的顶部以涵盖其所有功能:

// ReSharper disable SuggestBaseTypeForParameter