3

base基本クラスの保護された変数は、またはthisキーワードを使用して派生クラスでアクセスできると言われています。this キーワードが現在のクラス(派生クラス)を参照しているため、私は今完全に混乱しています。

public class A
{
  protected int i;
}
public class B :A
{
  void Display()
  {
    this.i=10;
    //  (or)
    base.i=10;
  }
}

技術的な違いはありますか? まず第一にDisplay()、保護されたアクセスの定義そのものが言うように、メソッド内で A のオブジェクトを作成し、そのオブジェクトを介して変数 i にアクセスできない理由を考えてみました。どの派生クラスでもアクセスできます。皆さん、いくつかのスレッドを見てきましたが、彼らが言うには、オブジェクトを作成して保護されたメンバーにアクセスすることはできません。私は、これは定義にかなり反していると感じています。

誰かが私の上記の質問の両方を説明してもらえますか

4

2 に答える 2

5

それはとても簡単です:

this現在のオブジェクトを参照します (たとえば、メソッドが のようvoid mymethod(int myvar)で、クラスがそのmyvar中で定義されている場合、 を使用myvarして引数をthis.myvar参照し、クラス内のものを参照できます)。

base基本クラス (クラスの派生元のクラス) を指します。(たとえば、 methodUpdateを上書きしている場合は、最後にbase.Update();call して元のメソッドを呼び出すことができます。)

于 2013-06-29T06:23:15.413 に答える
0

B が A クラスを拡張すると、B は A の i を継承します。

public class A {
    protected int i;
}
public class B : A {
    void Display() {
        i = 10; // this.i
    }
}
于 2013-06-29T06:22:21.803 に答える