【发布时间】: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 扩展方法没有定义部分类