2

我有点卡住了,经过一番搜索,我转向你:

class StatusResponse
{
    protected int _statusCode { get; set; }
    protected string _statusMessage { get; set; }

    public StatusResponse(string Response)
    {
        if (!String.IsNullOrEmpty(Response))
        {
            this._statusCode = int.Parse((Response.Split(' '))[0].Trim());
            this._statusMessage = Response;
        }
    }
}

class GroupStatusResponse : StatusResponse
{
    public int Count { get; private set; }
    public int FirstArticle { get; private set; }
    public int LastArticle { get; private set; }
    public string Newsgroup { get; private set; }

    public GroupStatusResponse(string Response) : base(Response)
    {
            string[] splitResponse = Response.Split(' ');
            this.Count = int.Parse(splitResponse[1].Trim());
            this.FirstArticle = int.Parse(splitResponse[2].Trim());
            this.LastArticle = int.Parse(splitResponse[3].Trim());
            this.Newsgroup = splitResponse[4].Trim();
    }

为什么我不能这样做:

GroupStatusResponse resp = new GroupStatusResponse("211 1234 3000234 3002322 misc.test");
Console.Writeline(resp._statusCode);
4

2 回答 2

2

使用

Console.Writeline(resp._statusCode);

从外部派生类是公共的,而不是受保护的使用。

但是,您可以添加如下内容:

class GroupStatusResponse : StatusResponse
{
   public int GetStatusCode()
   {
      return _statusCode;
   }
}

这是完全有效的使用。

此外,如果场景是任何人都应该允许读取 _statusCode,但只有基类应该能够设置它,您可以将其定义更改为:

public string _statusMessage { get; private set; }
于 2012-12-20T08:59:54.573 回答
0

这是因为 _statusCode 是protected. 这意味着该字段在类之外是不可访问的。

于 2012-12-20T09:00:06.223 回答