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 に答える