Ja. Klassen in Klassen zu definieren ist eher unüblich. Das macht man manchmal wenn die Klasse komplett intern ist. Also wenn die ~innere~ Klasse privat ist und nur von der ~äußeren~ verwendet wird.
Für eine öffentliche ~innere~ Klasse fällt mir kein sinnvoller Einsatzzweck ein.
Die Art deiner Frage lässt mich vermuten das dir der unterschied von Klassen und Instanzen von Klassen noch nicht klar ist. Mir fehlt da ein Ansatz das knapp zu erklären insofern würde ich dich da auf die Dokumentation bzw. irgendein gutes Buch verweisen das das erklärt. Was ich sagen kann und eventuell ein wenig hilft
Zitat: |
Mensch mMensch = new Mensch();
Mensch.Fertigkeiten.KoerperlicheFertigkeiten KFertigkeiten = new Mensch.Fertigkeiten.KoerperlicheFertigkeiten(); |
mMensch und KFertigkeiten haben überhaupt keinen Zusammenhang. Weder existiert irgendeine Mensch.Fertigkeiten.KoerperlicheFertigkeiten Instanz in mMensch noch gibt es irgendeine Mensch Instanz die zu KFertigkeiten gehört. Ein Klasse ist ein reines Muster für ein noch zu erstellendes Ding egal ob direkt in einem Namespace erzeugt oder in einer Klasse. Wo es definiert wird hat nur Einfluss auf die Sichtbarkeit der Defintion.
Wenn du Mensch ein paar Eigenschaften geben willst die durch die Fertigkeiten Klasse dargestellt werden mußt du Mensch ein Property/Feld geben das eine Instanz der Klasse Fertigkeiten veröffentlicht.
Das was du erreichen wolltest sähe wohl so aus
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| public class KoerperlicheFertigkeiten { internal KoerperlicheFertigkeiten() { }
public int Klettern { get;set; } public int Schwimmen { get; set; } }
public class GeistigeFertigkeiten { internal GeistigeFertigkeiten() { }
public int Lesen { get; set; } public int Rechnen { get; set; } }
public class Fertigkeiten { internal Fertigkeiten() { KoerperlicheFertigkeiten = new KoerperlicheFertigkeiten(); GeistigeFertigkeiten = new GeistigeFertigkeiten(); } public KoerperlicheFertigkeiten KoerperlicheFertigkeiten { get; private set; } public GeistigeFertigkeiten GeistigeFertigkeiten{ get; private set; } }
public class Mensch { public Mensch() { Fertigkeiten = new Fertigkeiten(); } public Fertigkeiten Fertigkeiten { get; private set; } } |