You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用静态方法无需加类名前缀的实现方法及Unity示例差异原因

问题原因

你能直接调用Unity的FindObjectOfType<T>()不需要加类名,是因为你的调用代码写在继承自UnityEngine.MonoBehaviour(或其父类UnityEngine.Object)的子类脚本中。FindObjectOfType<T>()本身就是UnityEngine.Object类内置的静态方法,子类中调用父类的成员(包括静态成员)不需要额外添加父类类名作为前缀。

而你自己实现的GetISystemComponent<T>()是定义在独立的静态类References中,和你写调用代码的类没有继承关系,所以默认情况下必须加类名前缀才能调用。

解决方法

使用C# 6及更高版本支持的using static语法即可实现免前缀调用,操作很简单:
在你需要调用该方法的脚本顶部,命名空间引用区添加如下代码:

// 如果References类放在自定义命名空间下,写法如下,替换成你自己的命名空间即可
using static MyNamespace.References;

// 如果References类没有定义在任何自定义命名空间下,写法如下
using static References;

添加后你就可以直接在该脚本中调用方法,不需要加前缀:

mM = GetISystemComponent<MazeManager>();

注意事项

如果你的项目中多个不同静态类存在同名的静态方法,免前缀调用会产生编译歧义,这种情况下还是需要添加类名前缀明确指定调用来源。

内容的提问来源于stack exchange,提问作者Martin Ma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:54:04