Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用数量可变的printf样式参数记录消息_C#_Logging_Variadic Functions - Fatal编程技术网

C# 使用数量可变的printf样式参数记录消息

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);

我正在尝试实现一个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);
    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);
}