JetBrian的Rider建议使用“ make参数类型组件”,但我不知道为什么

时间:2018-06-27 20:45:57

标签: c# unity3d jetbrains-ide rider

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

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

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

我想知道这个建议是更有效还是更习惯。如果您认识任何人,请回答。

图片是Rider的建议:

The image is a suggestion from Rider.

1 个答案:

答案 0 :(得分:5)

我无法确切地看到您如何使用变量(悬停文字覆盖了某些内容),但是ReSharper会在您使用派生类但不提供其任何其他功能时建议您这样做。似乎您正在引用它的gameObject属性,如果您看起来是继承层次结构,则Component是具有该属性的最低级别的类:

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