【问题标题】:C# class with a "hidden" method具有“隐藏”方法的 C# 类
【发布时间】:2026-01-08 04:25:01
【问题描述】:

我正在使用我没有编写的命名空间编写程序。在这个命名空间中有一个名为 Message 的类。现在这就是我感到困惑的地方。我能够编译类似于下面的代码:

void Func(Message message)
{
    BasePlayer player = message.Player();
}

我感到困惑的原因是Message类中不存在方法Player,并且Message不继承任何其他类。有人可以解释这是怎么发生的吗?我很乐意应要求分享更多信息。

【问题讨论】:

  • Message 可能有一个扩展名为 Player,它接受零参数。
  • 右键单击播放器并选择转到定义。它带你去方法,你可以自己看看它是什么。您可能正在查看一个名为 Message 的不同类,或者一个扩展方法(忍者编辑根本没有受到 @Jonesopolis 评论的启发)
  • 在写下Player方法的时候看一下intellinsense,看看是不是扩展方法。
  • The reason I am confused is that the method Player does not exist in the Message class and Message does not inherit any other class 我向你保证它确实如此,否则这将无法编译 - 它可能不在你正在寻找的地方。正如其他人所提到的,扩展方法可以让你扩展一个类,或者如果它是一个部分类,它可以定义在多个文件中。 Player() 上的 F12 将带您进入定义。
  • @DavidLively 扩展方法没有定义部分类

标签: c# .net class


【解决方案1】:

该类可能没有“已声明”,但它可能由另一个类作为扩展提供

你可以看这个question,在accepted response的代码中你可以看到你可以为其他类提供方法。即使它们被密封..

你的情况可能就是这样。

【讨论】:

  • 谢谢!我查看了该类的用法并能够找到它。
最近更新 更多