2017-03-05 3 views
0

Ich habe zwei Klassen, class A und class B.Mitglied Initialisierung in C#

public class A 
{ 
    public int someNumber; 

    public A(int a) 
    { 
     someNumber = a; 
    } 
} 

Jetzt hat class B ein Feld, das ein Objekt von class A ist. In C++ ist es möglich, dies zu tun:

public class B 
{ 
    public A foo; 

    public B(int a) : foo(a) { } 
} 

Aber das funktioniert nicht in C#. Wie kann man dieses Problem in C# lösen, ohne einen Standardkonstruktor in class A zu verwenden. Um genau zu sein, wie ist es möglich, einen Konstruktor für class B zu schreiben, der als Parameter den someNumber Wert von foo nimmt?

+1

Das ist nicht wirklich über C++ ist. Könnten Sie bitte das C++ - Tag entfernen? –

Antwort

5

Man könnte so etwas wie dies versuchen:

public class B 
{ 

    public A thing; 

    public B(int a) 
    { 
     thing = new A(a); 
    } 
} 
+0

Ich denke, Sie wollten "Ding" anstelle von "A" für den Auftrag setzen. –

+0

@MaxWeinzierl du bist blutig richtig! Mein Fehler. Danke – Christos

+0

@Christos oh, ok, danke. Ich nahm an, dass dies nicht funktionieren würde, weil ich dachte, dass ein Konstruktor immer alle Klassenmitglieder initialisiert hat, bevor der Körper des Konstruktors ausgeführt wird. Was dann zu einem Fehler führt, wenn für ein bestimmtes Mitglied kein Standardkonstruktor existiert. – Morten