C#Late Binding

0 c# binding

我有一个"简单"的问题,我创建了一个示例应用程序来说明.我希望b.getName()调用返回"barname",但它没有,我不知道如何让它工作.我已经在C#工作多年了,但此刻我觉得自己像个新手,因为这个后期绑定问题令我难过.

class Program
{
    static void Main(string[] args)
    {
        bar b = new bar();
        Console.WriteLine(b.getName());
        Console.ReadLine();
    }
}

class foo
{
    string name = "fooname";

    public string getName()
    {
        return this.name;
    }
}

class bar:foo
{
    string name = "barname";
}
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 5

默认情况下,您的name变量是私有的 - 听起来就像您想要的那样protected,因此您可以覆盖该值 - 这将起作用:

class foo
{
    protected string name = "fooname";

    public string getName()
    {
        return this.name;
    }
}

class bar : foo
{
    public bar()
    {
        name = "barname";
    }
}
Run Code Online (Sandbox Code Playgroud)