2

例如,printf在 c 中可以采用任意数量的参数,如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

使用 params object[] arg 作为最后一个参数。 http://msdn.microsoft.com/en-us/library/w5zay9db%28v=vs.71%29.aspx 查看更多详细信息

于 2012-07-23T08:52:41.047 回答
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 回答
0

在这种情况下有几种方法:

  • 您可以定义一个type包含您需要在方法之间传递和返回的所有字段。比 simple 更好object array,因为它是类型安全的。

  • 您可以定义放置参数名称和值的字典。比 simple 更好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 回答
0

只需使用您的参数传递一个对象

private void MyVoid(MyParameterObject params)
{

}
于 2012-07-23T08:52:32.023 回答