有沒有因爲他們都在做打印屏幕上的長度同一工作中使用{0}
和+
之間的區別:{0}和+之間有什麼區別?
Console.WriteLine("Length={0}", length);
Console.WriteLine("Length=" + length);
有沒有因爲他們都在做打印屏幕上的長度同一工作中使用{0}
和+
之間的區別:{0}和+之間有什麼區別?
Console.WriteLine("Length={0}", length);
Console.WriteLine("Length=" + length);
是有區別的。
例如:
Console.WriteLine("the length is {0} which is the length", length);
Console.WriteLine("the length is "+length+" which is the length");
+
連接兩個字符串,{0}
是要插入一個字符串的佔位符。
有沒有*真的*串聯和插入之間的區別?我看到的唯一區別是便利。 – Daniel 2013-05-03 20:31:42
我會說格式*而不是*插入*,因爲它確實是'String.Format(...)'。 – 2013-05-03 20:32:11
@Daniel我認爲值得區分 - 否則有些人可能會覺得你可以在任何地方使用「{0}」佔位符語法*。但是,您只能使用具有代碼來解釋字符串格式的方法。 – 2013-05-03 20:38:19
{n}
其中n >= 0
允許您以字符串中出現的順序替換值。
string demo = "demo", example = "example";
Console.WriteLine("This is a {0} string used as an {1}", demo, example);
+
讓你兩個或多個字符串拼接在一起。
Console.WriteLine("This is a " + demo + " string used as an " + example);
連接將實際上結束如下:'string.Concat(「這是一個」,演示,「字符串用作」示例);'編譯器完成後。 – asawyer 2013-05-03 20:35:31
第二行將創建一個字符串並將字符串輸出。 第一行將使用composite formatting,如string.Format。
Here是使用複合格式的一些很好的理由。
{n}
是一個可用於多個選項的佔位符。 其中n是一個數字
在你的例子中它會有所作爲,最終結果將是兩個字符串串聯的結果。然而,在類似
var firstName = "babba";
var lastName ="abba";
var dataOfBirth = new Date();
Console
.Write(" Person First Name : {0} | Last Name {1} }| Last Login : {2:d/M/yyyy HH:mm:ss}",
firstName,
secondName,
dateOfBirth);
它提供了一個易於閱讀界面,方便進行格式化
在您簡單的例子,有沒有什麼區別。但是有很好的理由可以選擇格式化({0}
)選項:它使得國際化軟件的本地化變得更加容易,並且使第三方編輯現有字符串變得更容易。
試想一下,比如你正在編寫產生此錯誤消息編譯:
"Cannot implicitly convert type 'int' to 'short'"
你真的想編寫代碼
Console.WriteLine("Cannot implicitly convert type '" + sourceType + "' to '" + targetType + "'");
?天哪,沒有。你希望把這個字符串轉換成資源:
"Cannot implicitly convert type '{0}' to '{1}'"
,然後寫
Console.WriteLine(FormatError(Resources.NoImplicitConversion, sourceType, targetType));
,因爲你有自由決定要改變這種狀況到:
"Cannot implicitly convert from an expression of type '{0}' to the type '{1}'"
或者
"Conversion to '{1}' is not legal with a source expression of type '{0}'"
這些選擇可以稍後由英語專業學生進行,無需更改代碼。
您也可以將這些資源翻譯成其他語言,再次而不更改代碼。
現在開始始終使用格式化字符串;當你需要編寫可正確使用字符串資源的本地化軟件時,你已經習慣了。
感謝解釋 – AK1 2013-05-03 21:28:57
我在閱讀StackOverflow和之前的Joel博客的5年中使用格式化字符串的最佳參數。 – bricklayer137 2013-05-04 00:05:13
最終結果沒有任何區別,但在實現方式上肯定存在差異。 – 2013-05-03 20:30:09
是的,C#區分大小寫,所以我們不能判斷長度是否與長度不同。 – 2013-05-03 20:31:31
但是如果你想要更多的信息,第一行將在Intern池中有Length = {0},但是第二行將在Intern池中。 – 2013-05-03 20:32:30