2017-05-10 72 views
0

我得到這個代碼行(C#)C#如何讓字符串參數數量在一個變量

Console.WriteLine("This is you {0}.", someclass.name); 

我想有什麼用這一部分:

private void ConsoleWriteColor(ConsoleColor color, string text) 
{ 
    Console.ForegroundColor = color; 
    Console.WriteLine(text); 
    Console.ResetColor(); 
} 

問題是,我不能過戶帶有{0}值的字符串寫入ConsoleWriteColor的參數文本中。

解決方案

string para = string.Format("Some text {0}",parameter); 
+1

你不可以編輯你的問題,並添加解決方案。只要檢查其中一個答案是正確的 –

+0

我不允許發佈任何進一步的問題,所以我在幫助中心查詢,在那裏我被要求改進問題。 – LuckyLuke

回答

2

您可以通過一個params argument您ConsoleWriteCOlor這樣

private void ConsoleWriteColor(ConsoleColor color, string text, params object[] prms) 
{ 
    Console.ForegroundColor = color; 
    Console.WriteLine(string.Format(text, prms)); 
    Console.ResetColor(); 
} 

現在你可以這樣調用

ConsoleWriteColor(ConsoleColor.DarkRed, "Hello {0} It is {1}", "Steve", DateTime.Today.DayOfWeek.ToString()); 

當心這種方法沒有檢查傳遞給函數的正確參數個數。您可以傳遞比格式字符串所期望的參數更少的參數並獲取異常(儘管也會發生相同的異常,也會直接寫入沒有此函數的字符串.Format)

1

使用string.Format("Some text {0}",parameter);它會插入到參數和返回的字符串。而我這裏是你如何能做到這一點:

public static void Main(string[] args) 
{ 
    //Your code goes here 
    Console.WriteLine("Hello, world!"); 
    ConsoleWriteColor(ConsoleColor.Red,"Hello {0} and {1}","Arthur","David") 
} 

private static void ConsoleWriteColor(ConsoleColor color, string text,params object[] a) 
{ 
    Console.ForegroundColor = color; 
    Console.WriteLine(string.Format(text,a)); 
    Console.ResetColor(); 
} 
+0

非常感謝! – LuckyLuke

1

您還應該檢查C#6.0 Interpolated strings功能。我認爲這是更具可讀性(你願意的話,我希望)

你並不需要更改方法上格式化或純:

private void ConsoleWriteColor(ConsoleColor color, string text) 
{ 
    Console.ForegroundColor = color; 
    Console.WriteLine(text); 
    Console.ResetColor(); 
} 


string name1 = "Arthur"; 
string name2 = "David"; 

ConsoleWriteColor(ConsoleColor.Red, $"Hello {name1} and {name2}"); <-- notice the $ 
+0

由於未定義'prms'變量,您的代碼將無法編譯。在給定的方法中你也不需要'string.Format'。 – Kyle

+0

@Kyle tnx,指出來。複製/粘貼東西...修復它。 –

相關問題