2011-08-27 3 views
0

다음 예제에서는 기본 클래스 인스턴스를 어떻게 참조합니까?기본 클래스 인스턴스를 어떻게 참조 할 수 있습니까?

public class A 
{ 
    string name = "Class A"; 

    public A() 
    { 
     var b = new B(this); 
    } 

    class B 
    { 
     public B(A a) 
     { 
      a.name.Dump(); // Write out the property of a.name to some stream. 
     } 
    } 
} 
+0

Java에서이 예제를 사용하면 A.this.test 또는 A.this.hello()를 사용할 수 있지만 C#에서는 어떻게 할 수 있습니까? A에서 B 로의 참조를 전달하는 것 이외에? – Jasper

+0

어떻게 할 수 있습니까? 클래스 B의 인스턴스에서 클래스 A의 인스턴스를 얻지 못했습니다. – Carsten

답변

1

당신은 나에의 참조를 전달해야 할 것은

이 작업을 수행 할 수

한 가지 방법이다 중첩 클래스, 아래 예제를 참조하십시오.


namespace Example 
{ 
    class A 
    { 
     string Name = "test"; // access restricted only to this class 
     public string Type; // global access 
     internal string Access; // within defining namespace 
     protected string Code; // this class and subclass 

     // When you create a nested class like C, you can create instances of C within this class(A). 

     C c = new C(); 

     class C 
     { 
      string name; 
      public C() 
      { 
       //this is a nested class and you cannot call A as its base 
       name = "test success"; 
      } 
     } 
    } 

    class B : A 
    { 
     public string Type { get { return base.Type; } set { base.Type = value; } } // You can use base when you hide a base class member 
     public B() 
     { 
      Type = "test"; 
      Code = "nothing"; 
      Access = "success"; 
      //Cannot Access 'Name' Here as it is private 
     } 

    } 
} 

+0

고맙겠지 만, 다른 방법보다이 방법에 더하여? – Jasper

+0

내가 아는 한 객체 A에 대한 참조를 전달하는 것 외에 다른 방법은 없습니다. C#의 중첩 클래스는 C++에서와 같은 방식으로 작동하지 않습니다. –

+0

답변 해 주셔서 감사합니다. – Jasper

1

명확하게 기본 클래스와 구별하기 위해 다음과 같이

public class A 
{ 
    public string test; 
    public A() 
    { 
     B b = new B(); 
     test = "I am A class of test."; 
    } 

    public void hello() 
    { 
     MessageBox.Show("I am A class of hello."); 
    } 

    class B 
    { 
     public B() 
     { 
      //Here... 
      //How can I get A class of test and call A class of hello method 
      //base.test or base.hello() are not working. 
     } 
    } 
} 
관련 문제