为什么编译器给出错误“名称'标识符'”在当前上下文中不存在

本文关键字:上下文 不存在 标识符 错误 名称 编译器 为什么 出错 | 更新日期: 2023-09-27 18:09:00

这是上下文(c#)。

public class Base
{
    public void SomeMethod()
    {
    }
}
public class Intermediate<TIntermediateTypeParam>
{
}
public class Derived<TDerivedTypeParam> : Intermediate<string>
{
    public void SomethingElse()
    {
        SomeMethod(); // Error: The name 'SomeMethod' does not exist in the current context.
    }
}

这是出乎意料的。有解释为什么和如何解决它吗?

为什么编译器给出错误“名称'标识符'”在当前上下文中不存在

Intermediate不子类Base,这是方法所在的地方,因此它不是Derived类的一部分,Derived不能直接访问它。

你要么需要从Base的实例调用它,要么有Intermediate(或Derived)子类Base