2016-05-15 138 views
0

我有一個類和函數參數使用默認對象值

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

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

如何解決辦法呢?

+0

如果我的答案在下面解決了您的問題,請指出。 –

回答

2

您需要在方法內部執行該操作,並提供該方法接受空值並將A(10)用作默認值的註釋。

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

null合併運算符 Slugart

+0

@Slugart這是行不通的,因爲只有在對象爲null時才需要進行賦值。你可以使用'a = a ??新的A(10);'但沒有必要。 –

+0

??是空合併運算符。沒有必要,但它更整潔,更簡潔,對嗎? – Slugart