2015-06-10 107 views
0

我有接受字符串數組作爲參數在多個參數傳遞作爲字符串數組

public static void LogMethodStart(string[] parameters) 
{ 
    AddLogEntry("Starting Method", parameters); //this does not work 
} 

public static void AddLogEntry(string[] parameters) 
{ 
    using(StreamWriter sw = new StreamWriter(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), FileName), true)) 
    { 
     foreach (string p in parameters) 
     { 
      stream.WriteLine(p.ToString() + DateTime.Now.ToString()); 
     } 
    } 
} 

是否有傳遞的元素的方式被包括爲一個數組,而不必做一些陣列的功能。 resize()操作並檢查null等...?

+0

聽起來像是你可能希望'params'關鍵字。 http://stackoverflow.com/q/7580277/97382 –

+0

nope,它給出了一個錯誤,說「無法將字符串[]轉換爲字符串」...可能是因爲「params」工程對單個對象,而不是集合/列表/ arrays – fifamaniac04

+0

你不能只對你現有的代碼掌握'params'而不做一些改動。你對你想要完成的事情的描述很模糊,所以很難做出比這更具體的事情,但底線是,如果你想傳遞可變數量的參數(相同類型)給一個方法, params'是要走的路。如果你解釋了「這不起作用」評論意味着什麼,這也會很有幫助。只是快速瀏覽一下似乎應該沒問題。 –

回答

4

你的方法簽名改成這樣:

public static void LogMethodStart(params string[] parameters) 
{ 
    AddLogEntry("Starting Method", parameters); //this does not work 
} 

然後,你可以把它在幾個方面:

LogMethodStart("string1","string2"); 
LogMethodStart(new string[] {"string1","string2"}); 

這兩個看起來都是一樣的方法內。

編輯:

修改你的身體LogMethodStart:

var newParams = new List<string>(parameters); 
newParams.Insert(0,"Starting Method"); 
AddLogEntry(newParams.ToArray()); 
+0

和'LogMethodStart((string [])null);''保持'LogMethodStart'的作者清醒。 –

相關問題