Mithilfe bestimmter Variablen in verschiedene Klassen (C#)
Ich bin Recht neu in C# und ich versuchte ein paar Dinge. Ich habe ein label (mit dem Namen 'newLabel') in der form1.cs. Ich habe eine Klasse namens 'Methoden.cs'. In dieser Klasse habe ich die Methode
public static void updateLabel()
was ich tun will ist:
public static void updateLabel()
{
newLabel.Text = "New Value";
}
aber das funktioniert nicht, wahrscheinlich, weil die Methode in Methoden.cs und die newLabel ist in form1.cs.
Ich hatte das gleiche problem mit deklarierten Variablen. In den Methoden.cs hatte ich die variable
int value;
aber ich konnte nicht verwenden Sie diese variable in form1.cs. Ich behoben, indem wir tun,
public static int value { get; set; }
Ich habe keine Ahnung, was das verursachte, aber es funktioniert, aber ich weiß nicht, wie ich mich bewerben kann dieser trick mit dem Etikett.
Könnte mir jemand helfen mit diesem?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie Lesen, über OOP und Kapselung. Im Grunde wollen Sie die form
Zugriff auf private Felder in einem anderen Objekt (Ihre Klasse) - diese ist begrenzt durch Kapselung, das ist, warum Sie problem können Sie umgehen indem du die Felder und Methoden, um die "öffentliche" Schnittstelle, die Ihre Klasse deklarieren, indem Sie die öffentlichen Eigenschaften und Methoden, ich.e in deinem Beispiel:
Manchmal Zusammensetzung verwendet wird, d.h. in deinem Beispiel seit Ihr Klasse ist, direkt auf die form, die Sie haben könnten eine form-Eigenschaft der Klasse:
Am besten wäre es, wenn Sie gelernt C# von tutorials, aber die Antwort auf diese Frage liegt mit einem so genannten "scope"
Im wesentlichen, den Umfang der Sichtbarkeit von Variablen, Klassen, Funktionen und Objekte. Eine variable markiert "privat" kann nur gesehen werden in die Sache, der es erstellt (wenn es erstellt wurde, innerhalb einer Funktion, wird es immer sein, private und alle definierten Variablen innerhalb einer Funktion kann nur verwendet werden, innerhalb dieser Funktion). Wenn es innerhalb einer Klasse nur der betreffenden Klasse können es verwenden,.
Variablen oder Funktionen bezeichnet, die als public (dies kann nur innerhalb einer Klasse) von außen gesehen werden kann, die Klasse. Zu tun, den Sie aufrufen würden "myClass".myVariable Zugriff auf die variable oder myClass.meinefunktion (), um die Funktion aufzurufen.
Bezeichnen, die Sichtbarkeit eines Objekts verwenden Sie die Schlüsselwörter "public" oder "private". Hinweis: Dies gilt nur für Variablen und Funktionen innerhalb von Klassen (es gilt auch für andere Dinge, die innerhalb von Klassen, wie geschachtelter Klassen und Strukturen, aber außerhalb des Geltungsbereichs dieses basic-intro).
Beispiel:
Dies funktionieren wird, wie myInt gesehen werden kann, der alles, was in myClass
Diese wird nicht, wie myInt ist private myObject und nur myObject es ändern können. myOtherClass nicht über die Berechtigung, und Sie können es nicht sehen.
Diese, zum Glück, funktioniert. myFunction wurde festgelegt, wie die öffentlichen in der myClass-Klasse, so kann es von jedermann gesehen werden außerhalb der Klasse.
Nun das Schlüsselwort static, welches Sie verwenden, hat eine ganz andere Bedeutung. Ich rate Ihnen, es nicht zu verwenden, bis Sie gelernt haben, über Sie als Sie sind, nur durch das hinzufügen zusätzlicher Komplexität Ihrer Probleme.
Ich hoffe das hat sich geklärt, Dinge, allerdings muss ich fordere Sie auf, Folgen einige echte Anleitungen, wie diese Grundlagen gründlich zu detailliert oder Sie werden gefangen werden später heraus.
Seit Ihr
updateLabel
Methode greift auf das label auf der Innenseite der form, das korrekte Objekt-orientiertes design diktieren würde, dass diese Methode sollte in der form auch. Dann haben Sie keine Probleme beim Zugriff aufnewLabel
.Technisch gesehen:
newLabel
bedeutet nicht, dass alles, was außerhalb eines form-Objekts. Sie hätte mehrere Kopien Ihrer form, was bedeuten würde, mehrere Kopien von IhrennewLabel
; die von Ihnen soll es sich beziehen? Natürlich ist der computer nicht erraten es; es wird erwartet, dass Sie ihm mitteilen, welche form Sie verwenden möchten.Der Grund, warum Sie konnte nicht auf die
value
variable ist, da war es private. Wenn Sie sich geändert hatte, es einfach zu:dann hätte es geklappt.
Aus der Form1 aufrufen, die updateLabel Methode in der mothods Klasse:
Mit dieser Methode in den Methoden-Klasse: