2017-03-15 5 views
-1

Grundsätzlich gilt:wie ein Objekt aus einer anderen Klasse referenzieren [C#]

Klasse A konstruiert ein Benutzerkonto-Objekt

Klasse B Objekt das Konto instanziiert und hält es

Klasse c enthält eine Methode, auf die in Klasse d verwiesen wird

cla ss d will für eine Methode aus der Klasse c

//constructs object 
public class A 
{ 
    public string firstname; 
    public string lastname; 

    public A(string givenname, string surname) 
    { 
     firstname = givenname; 
     lastname = surname; 
    } 
} 

//instantiates object from class A 
public static class B 
{ 
    public static void Accounts() 
    { 
     A PBeenis = new A("Paul", "Beenis"); 
    } 
} 

//holds a method that displays info about object 
public static class C 
{ 
    public static void Get_UserInfo(ref A name) 
    { 
     Console.WriteLine("Name: {0} {1}", name.firstname, name.lastname); 
    } 
} 

//calls a method in class C and references object from class B 
public static class D 
{ 
    static void Main(string[] args) 
    { 
     C.Get_UserInfo(ref PBeenis); 
    } 
} 

Wie verweisen Sie das Objekt PBeenis aus der Klasse B mit der Methode aus der Klasse C in der Klasse D ein Benutzerkonto aus der Klasse B verweisen?

C.Get_UserInfo(ref PBeenis); 

CS0103 Der Name 'Pbeenis' existiert nicht im aktuellen Kontext

Antwort

0

Nicht sicher, was Sie erreichen möchten, aber warum nicht die Instanziierung außerhalb der Methode machen? Sie müssen auch nicht das Schlüsselwort ref verwenden.

public static class B 
{ 
    public static A PBeenis = new A("Paul", "Beenis"); 
} 

//calls a method in class C and references object from class B 
public static class D 
{ 
    static void Main(string[] args) 
    { 
     C.Get_UserInfo(B.PBeenis); 
    } 
} 

Andere Option ist das Objekt in der Methode

//instantiates object from class A 
public static class B 
{ 
    public static A Accounts() 
    { 
     return new A("Paul", "Beenis"); 
    } 
} 
//calls a method in class C and references object from class B 
public static class D 
{ 
    static void Main(string[] args) 
    { 
     C.Get_UserInfo(B.Accounts()); 
    } 
} 

Grüße zurückzukehren.

+0

Erste Option ist, was ich gesucht habe. Ich lerne immer noch die Grundlagen, also ist das wirklich nur ein Test, damit ich den Unterricht weiter verstehen kann. Vielen Dank. –

0

Sie über Umfang lesen sollte.

Es ist unmöglich, Pbeenis von diesem Teil Ihres Codes zu referenzieren, da dies außerhalb des Gültigkeitsbereichs liegt.

Um dies zu vermeiden, benötigen Sie eine Möglichkeit, die Referenz innerhalb des Bereichs zu erhalten.

Zum Beispiel machen Pbeenis eine Eigenschaft der Klasse A und den Zugriff auf sie mag:

B.Pbeenis 

Hoffnung, das hilft.

Verwandte Themen