Ich habe eine Klasse namens Mitarbeiter, die ein Feld namens Versicherung hat, die von Typ Versicherung wie folgt ist
%Vor%Ich habe eine andere Klasse namens Versicherung
%Vor%Jetzt im Hauptprogramm möchte ich etwas wie
machen %Vor%C # beschweren sich und ich weiß, wie ich es beheben kann, indem ich eine Instanz der Insurance-Klasse erstelle.
Meine Frage ist, kann ich irgendwie die Werte für die Felder auf die Art, wie ich es im Hauptprogramm mit like
tun möchte**
%Vor%** Ich habe es versucht
%Vor%In der Hauptmethode, wenn ich
versuche %Vor%Ich bekomme diesen Fehler -
Fehler 2 Mehrdeutigkeit zwischen 'ConsoleApplication1.Employee.Insurance' und 'ConsoleApplication1.Employee.Insurance' c: \ Benutzer \ Lenovo \ Dokumente \ Visual Studio 2012 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Program.cs 15 17 ConsoleApplication1
Sie können Insurance im Konstruktor von Employee instanziieren, damit es automatisch für Sie ausgeführt wird. Sie können die Standardwerte angeben, um sicherzustellen, dass sie bei einem späteren Zugriff noch nicht als gültig definiert sind.
%Vor%Oder um die Klassen verschachtelt zu halten:
%Vor% Ohne Änderungen an der Klasse Employee
zu benötigen, könnten Sie Objektinitialisierer verwenden:
Alternativ und vielleicht am besten können Sie die Employee
-Klasse eine neue Instanz von Insurance
entweder in ihrem Konstruktor (wie in den anderen Antworten) erstellen, oder eine andere Option wäre es in% co_de zu tun % property getter selbst, daher wird es nur instanziiert, wenn Sie es verwenden. Hier ist ein Beispiel für Letzteres:
Schließlich würde ich vorschlagen, dass Sie keine Klassen erstellen, die alle öffentlichen Felder haben, es sei denn, Sie wissen wirklich, dass Sie das wollen. Stattdessen würde ich in Betracht ziehen, -Eigenschaften über Felder zu verwenden. Ich habe die Vorschläge anderer in den folgenden Code aufgenommen und meine eigenen bereitgestellt:
%Vor% Natürlich, aber wie werden Sie etwas zuweisen, das zu einem null
Objekt gehört?
Sie müssen Insurance
im Konstruktor von Employee
instanziieren.
EDIT Betreffend deinen Kommentar:
Wenn Sie diesem Ansatz folgen, können Sie auf myEmplyee.Insurance.PolicyID
mit zwei Punkten zugreifen. Der Konstruktor ist in Employee-Klasse, so dass Sie nach der Implementierung nichts mehr eingeben müssen als das, was Sie bereits versucht haben.
Tags und Links c#