字串組合時的選擇...

  • 3304
  • 0

摘要:字串組合時的選擇...

老實說,這篇文章的命名對我來說真的是難取捨到一個極點,不知道該怎麼取才能確切表達...Orz

那就...先這樣吧...

話說~之前從Java再轉回使用C#寫程式的時候,不知道為什麼,對於組字串的應用,腦海中很直覺的就浮現string.Format這個用法
然後也沒驗證一下有什麼缺點,就這樣給它寫下去了

結果後來看到"星寂"大大的文章,才有點"好像不太對勁"的感覺...

舉個例子:

string bbb = null;
string.Format("xxx = {0}", bbb);

這樣當bbb是null的時候,會出現Exception

改用+號把字串串接起來沒事,像這樣:

"xxx = " + bbb;

如果改用StringBuilder呢?像這樣:

StringBuilder sb = new StringBuilder("xxx = ").Append(bbb);

也沒事...

後兩者的答案都會一樣是"xxx = "

明明有三種組裝方式可以用...
結果我卻採用了不管是在效能上還是使用上最差又最不正確的那一種...Orz

P.S:又試了一下,如果bbb是DBNull時,三者的答案都是一樣的 

最近真是不用功到一個極點了...

(不知道為什麼用回文的方式一開始會成功也可以看到,但是等個一分鐘再更新感覺就像是被刪除了>.<
 現在只好用編輯原文的方式了...)

我想以我的例子來說,我只是想要讓它不要在變數為Null時出現Exception,這對我
來說,是我要的"正確"的結果

至於消耗資源,的確以前就有人告訴我用string相加是最耗資源的(最好是用StringBuilder)
在看人家文章的時候,我確實只看到效能,而沒考慮到它消耗了多少資源
但是string.Format在少量字串的表現下的確是不好...

另外要感謝最後兩位的大大提醒我再確認一次string.Format碰到Null會丟出Exception
的事...這...我回到家居然模擬不出來了...
公司的電腦上也沒有存放原本會出錯的例子...
這...我想我應該在原本的執行程式上就沒有寫好
只是我記得那明明是一個再簡單不過的例子,就像我上面貼的那樣,怎麼會???

我真的囧了...對不起,浪費各位的時間來陪我複習這個萬年習題...Orz

P.S:
剛剛想到最有可能的烏龍是...我錯把逗號打成+號了
導致看到Exception是"索引必須大於或等於零"
還一直以為是參數為Null所引起的...囧
真的對不起大家...Orz