2017-08-29 90 views
-3

這並不重要。我只是想知道。預先感謝您的幫助。c#遞歸方法參數

void AddAccount(string name, string surname, DateTime age, string phone, string username, string pwd) 
{ 
    // Codes... 
    // I want to call this method again. 
    // This a example. 


    if(Msg("Registration is available. Add it again.")) 
     AddAccount(name, surname, age, phone, username, pwd); 
} 

是否有一種方法可以自動取代參數?

我知道我可以做不同的事情。但我只是想知道這種語法的存在。

+0

你應該問你的問題在文本中,而不是在代碼。然後提供上下文或示例的代碼示例。 –

+0

你的問題很不清楚。你到底在問什麼? – Igor

+0

你已經展示了一個遞歸的例子,但它會永遠運行(好吧,直到你得到一個'StackOverflowException')。通常情況下,如果你想遞歸調用,你會有一些條件,你會檢查它,在某些時候,會停止遞歸。你想做什麼? –

回答

1

我認爲你在尋找什麼是快捷方式,以避免再次指定參數:在C#中存在

void AddAccount(string name, string surname, DateTime age, string phone, string username, string pwd) 
{ 
    // Codes... 
    // I want to call this method again. 

    // Is there a method that automatically takes parameters instead? 
    AddAccount(params); 
} 

沒有這樣的語法。另一種方法是創建一個參數類型:

private struct Person 
{ 
    public string Name; 
    public string Surname; 
    public DateTime Age; 
    public string Phone; 
    public string Username; 
    public string Password; 
} 

然後你可以有一個私人重載採用Param類:

void AddAccount(string name, string surname, DateTime age, string phone, string username, string pwd) 
{ 
    Person person = new Person 
    { 
     Name = name, 
     Surname = surname, 
     Age = age, 
     Phone = phone, 
     Username = username, 
     Password = password 
    } 
    AddAccount(person); 
} 

private void AddAccount(Person person) 
{ 
    // Codes... 

    // I want to call this method again. 
    AddAccount(person); 
} 
+0

感謝您的回覆。這是一個更長的時間,但重寫這些參數的解決方案。我想學會減少代碼的複雜性。謝謝你瞭解到沒有這個詞。 – Emre

+0

另一個好處是它可以提供更好的類型安全性。你可以在第二次調用時輕鬆切換'name'和'surname'參數,編譯器不會抱怨,但是在運行時顯然會遇到問題。 –

+0

我會在一些地方使用它。謝謝。 @D史丹利 – Emre