总所周知,C语言中的printf函数是可变参数函数的典型例子,printf函数是利用宏来实现可变参数的。
在学习C#的过程中,学到了参数数组这个知识,所以想到利用参数数组的方法来实现一个 简单的printf函数,以下是代码:
static void printf(string format, params object[] variables)
{
int variablesIndex = 0;
for (int index = 0; index < format.Length; index++)
{
char tempChar = format[index];
if (tempChar == '%')
{
index++;
tempChar = format[index];
switch (tempChar)
{
case 'd':
if (variables[variablesIndex] is int)
Console.Write(variables[variablesIndex]);
variablesIndex++;
break;
case 'f':
if (variables[variablesIndex] is float)
Console.Write(variables[variablesIndex].ToString());
variablesIndex++;
break;
case 'c':
if (variables[variablesIndex] is char)
Console.Write(variables[variablesIndex]);
variablesIndex++;
break;
case 's':
if (variables[variablesIndex] is char[])
{
foreach (char printChar in ((char[])variables[variablesIndex]))
{
Console.Write(printChar);
}
}
variablesIndex++;
break;
}
}
else
{
Console.Write(tempChar);
}
}
}