2016-05-15 25 views
0

Ich habe eine Klasse und FunktionParameter mit Standardobjektwert

class A 
{ 
    A(int i = 0) 
    { 
    } 
} 

void f(A a = new A(10)) // ? default parameter value must be compiler-time constanct 
{ 
} 

Wie es zu umgehen?

+0

Wenn meine Antwort unten Ihr Problem gelöst hat, geben Sie dies bitte an. –

Antwort

2

Sie müssten dies innerhalb der Methode tun und einen Kommentar eingeben, dass die Methode null akzeptiert und A(10) als Standardwert verwendet.

void f(A a = null) 
{ 
    if(a == null) 
     a = new A(10); 
} 
+0

null Koaleszenzoperator Slugart

+0

@Slugart Das würde nicht funktionieren, da die Zuweisung nur durchgeführt werden muss, wenn das Objekt 'null' ist. Sie könnten 'a = a ?? neues A (10); 'aber es gibt keine Notwendigkeit. –

+0

?? ist der Nullkoaleszenzoperator. Es gibt keine Notwendigkeit, aber es ist sauberer und prägnanter, nicht wahr? – Slugart