2013-10-15 69 views
0

我相信这已经得到了回答,我很抱歉,如果我不知道要问什么才能正确找到它,但我对C#很新,所以请不要这是一个非常基本的问题C#中的可变参数,当函数有另一个功能

我已经学到了一些蟒蛇,我想创建一个功能就像一个print语句在Python或类似这样的:

public static void PRINT(string d) 
{ 
     System.Diagnostics.Debug.WriteLine(d); 
} 

所以,我就不必不断谱写的Debug.WriteLine()每时每刻。这将像我习惯的Python打印语句一样简单。 Buuut。我似乎不能在多个参数

PRINT("Elapsed Time: {0}..ChangeDelayTime: {1}..CurrentSprite: {2}", elapsedTime, changeDelayedTime, currentSprite); 

现在我已经了解过载传递,我也可以做在C#作为超载另一个打印功能,但我想知道如果有一个简单的方法。 (由于是,使用这听起来前途顺便说一句,我已经找到了一些所谓的ArgIterator结构是什么,因为我试图传递,作为一个参数都无济于事。?)

+0

欢迎的话,我们不熄火!你只是想发送多个字符串?你可以在方法的参数中连接。 – JNYRanger

+1

如果您确实想要添加重载,请查看[params关键字](http://msdn.microsoft.com/zh-cn/library/w5zay9db.aspx)。对[Debug.WriteLine](http://msdn.microsoft.com/en-us/library/cc190153.aspx)有一个相应的重载,它执行相同的操作。 –

回答

2

替代方法:

void Main(){ 
    Print("{0}, {1}", "test", "another test"); 
} 

void Print(string format, params string[] args){ 
Console.WriteLine(format, args); 
} 

输出:

测试,另一个测试

+0

好吧,玩完代码和文档后,我明白你在说什么。我不明白的是第一个“字符串格式”的用途。不是“params string [] args”对任何可能传递的字符串都适用吗?其次,为什么不只是把“params object [] args”代替? – JonnyTruelove

+0

是的,它会工作。但是你不会有更多的高级格式化选项(比如使用文本)。你可以,但是你想吗?如果您对传递自定义对象的人有好处,请务必继续前进。 –

1

尝试:

PRINT(string.Format("Elapsed Time: {0}..ChangeDelayTime: {1}..CurrentSprite: {2}", 
      elapsedTime, 
      changeDelayedTime, 
      currentSprite)); 

将通过格式化的字符串转换成函数

0

你的意思是这样的;

PRINT(string.Format("Elapsed Time: {0}..ChangeDelayTime: {1}..CurrentSprite: {2}", elapsedTime, changeDelayedTime, currentSprite)); 
0

发生了什么事是,你缺少string.Format()通话。因此,将其更改为:

PRINT(string.Format("Elapsed Time: {0}..ChangeDelayTime: {1}..CurrentSprite: {2}", elapsedTime, changeDelayedTime, currentSprite)); 
0

要完成所要做的事情,最简单的方法是在方法参数中进行连接。

对于下面的方法:

public static void PRINT(string d) 
{ 
    System.Diagnostics.Debug.WriteLine(d); 
} 

为您连接,您可以在多个变量传递,只要如在以下几点:

TimeSpan elapsedTime; 
TimeSpan changedDelayedTime; 
string current sprite; 
PRINT("Elapsed Time: " + elapsedTime + "..ChangeDelayTime: " + changedDelayTime + "..CurrentSprite: " + currentSprite); 
相关问题