我目前正在使用JetBrains的Rider作为IDE。
private void RemoveAlert(int idx, Image lockImg)
{
...
}
在编写上面的代码时,我收到了Rider的建议,将RemoveAlert方法的Image类型参数转换为Component。我不知道为什么。
我想知道这个建议是更有效还是更习惯。如果您认识任何人,请回答。
图片是Rider的建议:
答案 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