2017-08-29 11 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

はあなたがいないコードでは、テキストにあなたの質問をする必要があります。

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

が次にあなたはのparamクラスを取り、民間の過負荷を持つことができます。次に、コンテキストまたはサンプルのコードサンプルを提供します。 –

+0

あなたの質問は非常に不明です。何を求めているのですか? – Igor

+0

あなたはすでに再帰の例を示していますが、永久に( 'StackOverflowException'を得るまで)実行されます。通常、再帰呼び出しが必要な場合は、再帰を停止する条件をいくつか確認します。あなたは何をしようとしているのですか? –

答えて

1

私は、あなたが探していることは、再びパラメータを指定しないようにする近道だと思う:

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); 
} 

んが、このような構文はC#で存在しません。代替は、パラメータの種類を作成するために、次のようになります。

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

もう1つの利点は、型の安全性を高めることです。 2番目の呼び出しで 'name'と' surname'パラメータを簡単に切り替えることができ、コンパイラは不平を言うことはありませんが、実行時には明らかに問題があります。 –

+0

私はいくつかの場所でそれを使用します。ありがとうございました。 @D Stanley – Emre