C#如何无需写类名即可调用其他文件中定义的静态方法
问题原因
你使用的using Printer;是普通的命名空间导入语法,仅能导入对应命名空间下的类型,不支持直接导入类的静态成员,因此无法实现省略类名调用静态方法的需求。
解决方案
C# 6及以上版本提供了using static静态导入语法,专门用于导入指定类的所有公开静态成员到当前上下文,按以下步骤修改即可:
- 移除你原来的
using Printer;语句,替换为using static animals.Printer; - 确认你需要外部调用的
P()方法重载已添加public修饰符(你当前代码里的无参P()、带object参数的P()方法已经是public,无需额外修改)
修改后的Program.cs示例代码:
using System; using static animals.Printer; namespace animals { class Program { static void Main(string[] args) { Printer.P(); // 原有带类名的写法仍然兼容 P(); // 现在可以直接调用,不会再报上下文不存在的错误 } } }
注意事项
- 如果存在多个导入类的静态方法同名冲突,仍需要显式写类名指定调用的方法来源
- 该语法仅对目标类的公开静态成员生效,类内部的私有静态方法无法被外部导入调用
内容的提问来源于stack exchange,提问作者yvisek
相关产品推荐
相关产品推荐

