如何使用抽象类的属性?

时间:2016-01-12 16:16:24

标签: c# properties abstract

该属性在一个抽象类中,然后从main调用。目标是打印“Bip bip Digital”,但它只打印“Bip bip”。我甚至尝试使用构造函数设置_phoneType变量,但它也不起作用。

using System;
abstract class Telephone
{
    protected string _phoneType;
    public string PhoneType {
        set
        {
            _phoneType = PhoneType;
        }
        get
        {
            return _phoneType;
        }
    }
    public abstract void Ring();
}
class DigitalPhone : Telephone
{
    public override void Ring()
    {
        Console.WriteLine("Bip bip {0}", _phoneType);
    }
}
class Program
{
    static void Main()
    {
        DigitalPhone myDPhone = new DigitalPhone();
        myDPhone.PhoneType = "Digital";
        myDPhone.Ring();
    }
}

2 个答案:

答案 0 :(得分:4)

您的PhoneType setter目前只将_phoneType设置为其当前值,该值最初为null。你应该把它改成:

set
{
    _phoneType = value;
}

或只是使用自动属性:

public string PhoneType { get; set; }

答案 1 :(得分:1)

setter存在问题,它没有将传入的值设置为_phoneType。容易犯错误。它应该是......

set
{
    _phoneType = value;
}

否则代码对我来说都很好。