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
我目前正在使用 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