none
不需要縮小轉換的多載 RRS feed

  • 問題

  • 請問:

     

    我的程式碼概略如下:

     

    dim iAA as Integer=100

    sqlDS.InsertCommand = "Insert Table1 Values(@AA)"
    sqlDS.InsertParameters.Add("AA", TypeCode.Int32, iAA)

     

    原本在VS2005之下都正常,但安裝VS2008之後(因為聽說同一台電腦上可以安裝兩個不同版本的Visual Studio),上面的最後一行居然Design Time就有問題,錯誤訊息為:

     

    多載解析失敗,因為不需要縮小轉換的多載'Add'不存在,故無法呼叫。

     

    如果型態是String的部份,就不會有這樣的錯誤。

    請問該怎麼解決呢?謝謝!

     

    2008年10月16日 上午 05:42

解答

  • HI,

     

    沒有怪怪的啦, 您要看Add方法的第三個參數的型態(宣告成String), 而不是看您傳入的第二個參數指定的是什麼型態

     

    tihs

    2008年10月16日 上午 07:08

所有回覆

  • HI,

     

    這是因為第三個參數的型態要求為字串, 所以要這樣寫:

    sqlDS.InsertParameters.Add("AA", TypeCode.Int32, iAA.ToString())

     

    因為VB2005幫你做了自動轉型, 所以沒有問題

     

    tihs

    2008年10月16日 上午 06:14
  • 那如果是布林值也全部都要這樣轉換嗎?

    我的專案還是在VS2005上面,並不是用VS2008打開,為什麼還會這樣呢?

    有沒有什麼選項可以改變?

    2008年10月16日 上午 06:24
  • HI,

     

    寫程式有了解方法需要的型態並做好轉型是個好習慣, 同時也可以防止出現莫明其妙的錯誤, 所以建議您在程式中加入轉型功能

     

    tihs

    2008年10月16日 上午 06:47
  • 可是這樣的轉型不太合理,我的型別本來就是Integer,而且我的TypeCode.Int32,本來就是整數,可是偏偏強迫我要轉為String,這樣好像怪怪的。

    2008年10月16日 上午 06:51
  • HI,

     

    沒有怪怪的啦, 您要看Add方法的第三個參數的型態(宣告成String), 而不是看您傳入的第二個參數指定的是什麼型態

     

    tihs

    2008年10月16日 上午 07:08
  • 謝謝您的答案!

     

    2008年10月16日 上午 07:21
  • 移文到Visual Basic
    2008年10月18日 上午 08:16
    版主