为什么我无法在派生类中访问受保护的属性

use*_*121 2 c# polymorphism access-modifiers

我有两个课程,这是我的代码:

//My Base class
public class People
    {
       public People()
       {
       }

        protected string name;

        protected string Name
           {
        get 
        {
            return this.name;
        }
        set 
        {
            this.name = value;
        }
    }

    }

//The Child class 

public class Student:People
    {
        private int id;

        public Student()
        { 
        }

        public Student (int id, string name)
        {
            this.id = id;
            this.Name = name;
        }

        public int ID
        {
            get
            {
                return this.id;
            }

            set

            {
                this.id = value;
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

当我创建Student类的实例(如下面的实例)时,我无法从父类People中访问NAME属性。

 public partial class Form1 : Form
    {

        private void button1_Click(object sender, EventArgs e)
        {
            Student student1 = new Student();
            student1. // only ID property is accessible 

        }
    }
Run Code Online (Sandbox Code Playgroud)

我做错什么了吗?由于Student是People的子类,因此我希望可以通过Student实例访问NAME属性。非常感谢您的帮助。

Omr*_*ron 5

您没有做错任何事情,但是如果您想访问

Name
Run Code Online (Sandbox Code Playgroud)

通过一个实例

Student
Run Code Online (Sandbox Code Playgroud)

您必须声明该属性public。否则,仅允许从该类内部访问(不允许通过实例)。