[VBNET] String.Format(String, Object[]) 多載的問題紀錄


因為不是 MVP 沒有免費的微軟問題數可用 (微軟的技術支援是收費的) ,所以不能確定是不是 bug ,就當成問題紀錄記在這。

我原先是在使用這功能時發現異常
StringBuilder.AppendFormat(String, Object())

所以我回到最簡單的原點,測試呼叫 String.Format(String, Object()) 這個多載,微軟官方說明詳如下方連結。

String.Format 方法 多載 Format(String, Object[])

從官方說明來看,這個多載第一引數是純字串,第二引數為物件陣列。

不過我用 VBNET 經過測試,我只能使用
String.Format(Object, Object())

實際上說明內無此多載,詳見上方官方說明。

為了驗證,我用 Visual Studio Code 在 ASP.NET 寫一小段測試程式碼,選用 ASP.NET 是因為可以更短小的程式碼進行測試,而且可以在 IIS 新增一個虛擬應用程式,就可以將同一目錄設定成 .Net framework 2.0/4.0 兩種版本。

測試程式碼
測試程式碼

我用 ASP.NET 來測試,分別測試 .Net framework 4.0 整合式 與 .Net framework 2.0 整合式 (用虛擬目錄 Test2i 指向同一個檔案,詳見錯誤訊息檔案路徑)

.Net framework 2.0 整合式
.Net framework 2.0 整合式

.Net framework 4.0 整合式
.Net framework 4.0 整合式

可以看到兩個錯誤畫面最上方輸出的第一行都能正確輸出 .Net framework 版本。

第二行、第三行分別都是確認 Format(Object, Object[]) 可正確呼叫。

第四行則為 Format(String, Object, Object, Object)

但第五行是 Format(String, Object[]) ,就跳錯誤了…

現在搞不太清楚 String.Format 這個多載到底發生甚麼問題,暫時紀錄在網誌,以便以後查閱。

註:StringBuilder.AppendFormat 也有這樣問題

Categories: 技術分享, 更新與回報 | 標籤: | 3 則迴響

文章分頁導航

3 thoughts on “[VBNET] String.Format(String, Object[]) 多載的問題紀錄

  1. 孫守真

    通常動詞用「記錄」,而名詞用「紀錄」。動詞「記錄」這一動作完成後的結果是「記錄」(名詞),如 a databse records a record,就是資料庫記錄(v.)了一筆記錄(n.)。因為是與語言文字有關的(資料data也是由文字、字元characters、乃至數碼 digits 所組成,所以从「言」,不從「糸」。
    而「紀錄」的「紀」从「糸」,乃「綱紀」的紀,是與「纜繩」有關的,所以才和「纜、繩」等字一樣,都从「糸」。「維持」一種紀錄就好像保持了一種「綱紀」(「維、綱」也从「糸」就是這個道理),破了紀錄,就像破了綱紀(既有的規範或範圍),說「破紀錄」,就好像說「踰矩」一樣。(矩,也是現有的局限或規範:不以規矩,不成方圓。)
    不要小看語文的影響與力量,畢竟,什麼學問、再高深的技術,也是靠它們來傳遞正解與訣竅的;祕笈,也是由文字來寫成了、「記錄」的。感恩感恩 南無阿彌陀佛

  2. Ammon

    Dim arrData As Object = New Object(){“Test",1.2345,Date.Now()}
    問題在這裡把 Object() 換成了 Object
    所以多載判定為 String.Format(String, Object)
    而 strFormat 應該要有三個引數所以造成錯誤

    • 經測試:
      Dim arrData() As Object = New Object(){“Test", 1.2345, Date.Now()}
      的確可行。
      但實務上變數可能經過多層引數轉換,最後變數可能還是會變成 Object 。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

在WordPress.com寫網誌.

%d 位部落客按了讚: