我正在寫的String.format擴展的String.format不追加給定的ARGS
我的分機(我已經沒有任何問題之前完成。):
public static string FormatWith(this string source, params object[] args) {
source.ThrowIfNull("source");
return string.Format(source, args);
}
我的測試:
[TestMethod]
public void FormatWith_ShouldReturnCorrectResult_FromValidArgs() {
var expected = "testing 123";
var actual = "test".FormatWith("ing", " ", 123);
Assert.AreEqual(expected, actual);
}
在我的測試中,調用FormatWith之後,實際應該是「測試123」,但它只是「測試」。
我測試的消息:
Assert.AreEqual failed. Expected:<testing123>. Actual:<test>.
我已經試過路過不是字符串等各類成擴展,但結果不變。我確定source.ThrowIfNull不會引發異常。
那麼是什麼給?我可以忽略一些東西嗎一個很好的答案會告訴我一個FormatWith的工作實現,同時解釋爲什麼我的實現不起作用。
編輯:我是個白癡,完全忘了{0},{1} ...我每天都會使用它。定時器啓動時將接受第一個答案。多謝你們。
'String.Format'需要標記,如'{0它是格式字符串。看起來你只是想追加,所以使用'+'或者'Join'。哦,[文檔](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCkQFjAA&url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-我們%2Flibrary%2Fsystem.string.format(v%的3Dvs.110)的.aspx&EI = HOX-UuvsLIqa2AW5g4DQBA&USG = AFQjCNGVlOAX1XvVPeQrzDqOQ4KNQMZ1AA&SIG2 = cYA7yJvLsfAoo8smw3D0gA&BVM = bv.61535280,d.b2I) – crashmstr
順便說一句,與爲什麼擴展方法麻煩?爲什麼不按照它的意圖使用String.Format()? String.Format(「test {0} {1}」,「ing」,「123」)? – Scott
我更喜歡擴展的語法。 strSomething.FormatWith(1,2)比string.Format(strSomething,1,2)漂亮。 –