using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;public class A
{
    protected int num = 3;
}public class Person : A
{
    protected string ssn = "444-55-6666";
    protected string name = "John L. Malgraine";    public virtual void GetInfo()
    {
        Console.WriteLine("Name: {0}", name);
        Console.WriteLine("SSN: {0}", ssn);
    }
}
class Employee : Person
{
    public string id = "ABC567EFG";
    public override void GetInfo()
    {
        // Calling the base class GetInfo method:
        base.GetInfo();
        Console.WriteLine("Employee ID: {0}", id);        //Console.WriteLine("{0}",base.base.num);
    }
}class TestClass
{
    static void Main()
    {
        Person E = new Employee();
        E.GetInfo();
    }
}
我想在Employee类的GetInfo()里把A类中的num打印出来,Console.WriteLine("{0}",base.base.num);这样写显然不对,正确的写法是什么

解决方案 »

  1.   

    Console.WriteLine("{0}",num);直接打印
      

  2.   

    public class A
    {
        protected int num = 3;
    }为什么要 protected呢?
    本身设计就可能有问题,这样它在Person 时就是private了,在Employee中就不可见了。
    那么你在Employee应该最好不要访问这个本不属于自已的东西。这样改行不行
    internal int  num = 3;
      

  3.   

    1楼说的正确,可以打印出来,protected成员被public继承以后就成了private了吗,不是这样吧?
      

  4.   

    Console.WriteLine("{0}",base.num)这样不行??
      

  5.   

    这样可以。我把这个改的更变态一些:
    public class A
    {
        protected int num = 1;
    }public class Person : A
    {
        protected int num = 2;
    }class Employee : Person
    {
        public int num = 3;
    }
    如果这样呢?
      

  6.   


    '直接这样就可以了啊
    Console.WriteLine("{0}", base.num);
      

  7.   


    如果这样写的话 A类中的num 被Person 覆盖 应该没办法获取了
    如果A类中定义为 public int num = 1;
    可以用 A a =new A(); a.num 获取
      

  8.   


    如果你真这样写了,两三年后你再看到这段代码,你就要后悔死了(除非这段代码就你一个人见过)。可以尝试
    internal int Num
    {
        get;
        private set;
    }
    构造函数初始化