以编程方式将变量插入string.format(C#)

时间:2018-05-27 22:18:04

标签: c#

所以想象一下,我将以下变量设置为string.format:

string foo = string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}");

Format方法将拥有比这更多的占位符(准确地说是64),并且根据某些条件,它们可能会发生变化。所以我想知道是否有办法遍历我拥有的变量列表,然后相应地将这些变量插入格式方法。我不知道如何开始这个,如果它甚至可能,但我当然不必手动将64个变量插入格式方法?

3 个答案:

答案 0 :(得分:2)

String.Format超载接受params object[]参数:

public static string Format (string format, params object[] args);

这意味着您可以传递任何数量的任何类型的对象。但是,您有责任确保传递的参数数量与字符串中的占位符数量相匹配。例如:

DateTime date = DateTime.Today;
int number = 1234;
string format1 = "{0} == {1}";

string formatted = Format(format1, date, number);
// OR
object[] values = new object[] { date, number };
string formatted = Format(format1, values);

private static string Format(string text, params object[] values)
{
    return string.Format(format1, values);
}

答案 1 :(得分:1)

获取列表,按照您想要的顺序对其进行排序 - 然后

var l = new List<string>();
// add to l, in the order you want then - 
// when adding convert to the string equivalent if it's not a string already.
var s = string.Join("|",l);
return s;

答案 2 :(得分:-1)

是的,可能。您可以使用params关键字创建具有未指定数量的参数的函数。像这样的东西:

void myFunction(params object[] parameters)
{
    foreach (var x in parameters) ...

}