C#:将集合转换为 params[]

标签 c# string-formatting parameters

这里是我的代码的简化:

void Foo(params object[] args)
{
    Bar(string.Format("Some {0} text {1} here {2}", /* I want to send args */);
}

string.Format 需要作为 params 发送的参数。有什么方法可以将 args 集合转换为 string.Format 方法的参数吗?

最佳答案

params 关键字只是语法糖,它允许您使用任意数量的参数调用此类方法。但是,这些参数始终作为数组传递给方法。

这意味着 Foo(123, "hello", DateTime.Now) 等同于 Foo(new object[] { 123, "hello", DateTime.Now }).

因此,您可以将参数从 Foo 直接传递给 string.Format,如下所示:

void Foo(params object[] args)
{
  Bar(string.Format("Some {0} text {1} here {2}", args));
}

但是,在这种特殊情况下,您需要三个参数(因为您的格式中有 {0}、{1} 和 {2})。因此,您应该将代码更改为:

void Foo(object arg0, object arg1, object arg2)
{
  Bar(string.Format("Some {0} text {1} here {2}", arg0, arg1, arg2));
}

...或者按照马塞洛的建议去做。

关于C#:将集合转换为 params[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535992/

相关文章:

java - 我可以将复杂的参数传递给 Java Applet 吗?

parameters - 创建一个整数以与 ColdFusion 中的参数类型整数一起使用

c# - Windows 索引搜索 - OleDbException 未指定错误

c# - 从 C# 打印 PRN 文件

c# - 将 TimeSpan 格式化为倒数计时器的正确方法是什么?

Python SQL 查询字符串格式化

c# - 格式十进制 c# - 保留最后一个零

JAVA RESTFull服务器获取POST数据,其中 "%"(百分比)作为值@FormParam

c# - NLog via LINQPad - 将配置文件放在哪里?

c# - SSRS 中的数据方法参数