假设您有一个时间戳功能,然后想要创建一个新功能来合并您的时间戳和Console.WriteLine()
,例如
public static void Write(string msg)
{
WriteTimeStamp();
Console.WriteLine( msg );
}
但是WriteLine()
方法有18个左右的重载,这些重载不会反映在包装函数的签名中。你如何让包装器获取非字符串并将它们传递给WriteLine()
?
答案 0 :(得分:5)
您可能需要params
关键字,或者我可能会误解您的问题:
public static void Write(string msg, params object[] args)
{
WriteTimeStamp();
Console.WriteLine(msg, args);
}
这允许您指定任何类型的0个或多个附加参数,并且将调用Console.WriteLine(string, params object[])
重载,它几乎可以处理所有其他参数。
答案 1 :(得分:2)
在C#4.0中,您可以使用动态变量(请参阅this blog post):
public static void Write(object msg)
{
WriteTimeStamp();
dynamic dynMsg = msg;
Console.WriteLine(dynMsg);
}
答案 2 :(得分:0)
使用 params 关键字作为方法参数