2

たとえば、printfcでは)のような任意の数のパラメータを取ることができ、以下のprintf("%d %d %s %s...",a,b,c,d,...ように文書化されています

printf( const char *format [, argument]... );

C#でそのような関数を定義するにはどうすればよいですか?

4

6 に答える 6

8

paramsキーワードの使用:

void WriteAll(params object[] args) {
   for(int i = 0; i < args.Length; i++)
       Console.WriteLine(args[i]);
}

argsは、渡したすべての引数を含む配列になります。これは最後の仮引数でなければならないことに注意してください。

于 2012-07-23T08:52:38.987 に答える
1
private void Print(params object[] values)
    {
        foreach (var item in values)
        {
            Console.WriteLine(item);
        }
    }

このコードは、「params」キーワードを使用してオブジェクト配列に送信するすべてのアイテムをコンソールに出力します。このメソッドは、必要な数のパラメーターを使用して呼び出すことができます(またはなしで呼び出すことができます)。

リンク: http: //msdn.microsoft.com/en-us/library/w5zay9db (v = vs.110).aspx

于 2012-07-23T08:54:16.313 に答える
1

C#では、paramsキーワードを使用します。

public static void UseParams2(params object[] list)
{
    for (int i = 0; i < list.Length; i++)
    {
        Console.Write(list[i] + " ");
    }
    Console.WriteLine();
}
于 2012-07-23T08:54:46.643 に答える
1

最後の引数としてparamsobject[]argを使用します。 http://msdn.microsoft.com/en-us/library/w5zay9db%28v=vs.71%29.aspx 詳細については、を参照してください。

于 2012-07-23T08:52:41.047 に答える
0

パラメータを使用してオブジェクトを渡すだけです

private void MyVoid(MyParameterObject params)
{

}
于 2012-07-23T08:52:32.023 に答える
0

この場合、いくつかのアプローチがあります。

  • typeメソッド間で受け渡しする必要のあるすべてのフィールドを保持するを定義できます。シンプルな方がいいobject arrayです。タイプセーフだからです。

  • パラメータ名と値を配置する辞書を定義できます。シンプルな方がいいobject arrayです。タイプセーフだからです。

  • (これは、パラメーターの量とコードの使用ロジックによって異なります)同じ関数のオーバーロードを定義できます。

    func A (AA aa) 
    
    func A(AA aa, BB bb =null)
    
    func A(AA aa, BB bb = null, CC cc = null) 
    

等々...

于 2012-07-23T08:53:52.883 に答える