首页 > 解决方案 > 如何在 C# 中使用子类属性

问题描述

程序

using System;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            B x = new B();
            x.show();
        }
    }

    public class A     //base class
    {
        protected int no = 1;

        public void show()
        {
            Console.WriteLine(no);
        }
    }
    public class B : A  //sub class
    {
        protected int no = 100;
    }
}

输出 1

如何使用子类属性值而不是基类属性值?

我尝试了覆盖,新关键字,但它似乎不起作用。

我对这个问题的了解是:子类既拥有父类属性,又拥有自己的属性。

但是子类属性被基类属性隐藏,如果是故意的,你可以使用 new 关键字。

谢谢

标签: c#

解决方案


如何在 C# 中使用子类属性

protected int no = 1;

这不是属性,而是字段。

您可以在子类(小提琴)中重新分配该字段的值:

public class B : A  //sub class
{
    public B() 
    {
        no = 100; 
    }
}

或者你可以用一个属性替换你的字段,它可以是虚拟的,因此被覆盖(小提琴):

public class A     //base class
{
    protected virtual int no => 1;

    public void show()
    {
        Console.WriteLine(no);
    }
}
public class B : A  //sub class
{
    protected override int no => 100;
}

推荐阅读