C# 使用数量可变的printf样式参数记录消息
我正在尝试实现一个C#方法,该方法可以使用格式字符串和数量可变的printf样式参数记录消息。理想情况下,它的工作原理与我在下面粘贴的C函数完全相同,当然,这也是C的惯用用法C# 使用数量可变的printf样式参数记录消息,c#,logging,variadic-functions,C#,Logging,Variadic Functions,我正在尝试实现一个C#方法,该方法可以使用格式字符串和数量可变的printf样式参数记录消息。理想情况下,它的工作原理与我在下面粘贴的C函数完全相同,当然,这也是C的惯用用法 static void LogMessage(const char * iFormat, ...) { va_list argp; FILE * fp; fp = fopen("log.txt", "a"); if (fp != NULL) { va_start(argp, iFormat);
static
void
LogMessage(const char * iFormat, ...)
{
va_list argp;
FILE * fp;
fp = fopen("log.txt", "a");
if (fp != NULL) {
va_start(argp, iFormat);
vfprintf(fp, iFormat, argp);
va_end(argp);
fprintf(fp, "\n");
fclose(fp);
}
}
此函数对我来说很方便,因为它允许我进行以下调用:
LogMessage("Testing");
LogMessage("Testing %s", "1 2 3");
LogMessage("Testing %d %d %d", 1, 2, 3);
静态无效日志消息(参数字符串[]日志列表)
{
对于(int i=0;i
您想创建一个
C#使用关键字执行此操作
static void LogMessage(string formatString, params string[] formatArguments)
{
string.Format(formatString, formatArguments);
}
请注意,params关键字只能用于方法签名中的最后一个参数,它要求参数为数组
这只是实际传递数组的语法糖。谢谢,这正是我要找的类型。我有一些正确的元素,但就是不能让它们在正确的“顺序”!
static void LogMessage(params string [] logList)
{
for ( int i = 0 ; i < logList.Length ; i++ )
doLogging(logList[i]);
}
static void LogMessage(string formatString, params string[] formatArguments)
{
string.Format(formatString, formatArguments);
}