0

簡単な質問:

public class class1
{
     public string string1;
     public class class2
     {
         public string string2
         {
             get{ string tmp = class1.string1;  } 
         }
     }

}

class2.string2.get から class1.string1 に到達できるようにしたいのですが、できません。それができるように、何を変更することをお勧めしますか?

ありがとう

4

4 に答える 4

1

コンストラクターで class1 参照を class2 に渡す:

public class class1 {
  public string string1;
  public class class2 {
    private class1 _Reference;
    public class2(class1 reference) {
      if (reference == null) {
        throw new ArgumentNullException("reference");
      }
      _Reference = reference;
    }
    public string string2 {
      get { return _Reference.string1; }
    }
  }

}

両方のクラスが作成された後、class1 参照を class2 に渡します。

public class class1 {
  public string string1;
  public class class2 {
    private class1 _Reference;

    public class1 Reference {
      set { _Reference = value; }
    }

    public string string2 {
      get { return _Reference.string1; }
    }
  }

}

static void usage() {
  var foo = new class1();
  var bar = new class1.class2();
  bar.Reference = foo;
  string value = bar.string2;
}
于 2013-06-20T09:34:19.960 に答える
0

Java から来た私は、C# で開発を始めたときにこの「問題」に直面しました。

Dennis Traubと C# のこの記事で明確に説明されているように、外部クラスのメンバーやメソッドにアクセスすることはできません。したがって、Java で自動的に行われることを実装する必要があります。

class OuterClass {
    string s;
    // ...
    class InnerClass {
        OuterClass o_;
        public InnerClass(OuterClass o) { o_ = o; }

        public string GetOuterString() { return o_.s; }
        }

    void SomeFunction() {
        InnerClass i = new InnerClass(this);
        i.GetOuterString();
    }
}
于 2013-06-20T10:26:52.657 に答える