2013-10-15 67 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); 
相關問題