簡體   English   中英

為什么在VB.Net中將其評估為false?

[英]Why does this evaluate to false in VB.Net?

我有這段代碼,它的計算結果為false而不是字符串。 它所做的只是建立一個字符串。 有什么想法嗎?

 Dim statement As String = "Insert into table dbo.IV00101 values(" +
        "ITEMNMBR=" + "@ITEMNMBR" + "," +
        "ITEMDESC=" + "@ITEMDESC" + " , " +
        "NOTEINDX=" + "@NOTEINDX" + "," +
        "ITMSHNAM=" + DBNull.Value + "," +
        "ITEMTYPE=" + "1" + "," +
        "STNDCOST=" + "@STNDCOST" + "," +
        "CURRCOST=" + "@CURRCOST" + "," +
        "ITEMSHWT=" + "0" + "," +
        "DECPLQTY=" + "3" + "," +
        "DECPLCUR=" + "3" + "," +
        "ITMTSHID=" + DBNull.Value + "," +
        "TAXOPTNS=" + "1" + "," +
        "IVIVINDX=" + "0" + "," +
        "IVIVOFIX=" + "0" + "," +
        "IVCOGSIX=" + "0" + "," +
        "IVSLSIDX=" + "0" + "," +
        "IVSLDSIX=" + "0" + "," +
        "IVSLRNIX=" + "0" + "," +
        "IVINUSIX=" + "0" + "," +
        "IVINSVIX=" + "0" + "," +
        "IVDMGIDX=" + "0" + "," +
        "IVVARIDX=" + "0" + "," +
        "DPSHPIDX=" + "0" + "," +
        "PURPVIDX=" + "0" + "," +
        "UPPVIDX=" + "0" + "," +
        "IVRETIDX" + "0" + "," +
        "ASMVRIDX=" + "0" + "," +
        "ITMCLSCD=" + DBNull.Value + "," +
        "ITMTRKOP=" + "1" + "," +
        "LOTTYPEAC=" + DBNull.Value + "," +
        "KPERHIST=" + "0" + "," +
        "KPTRXHST=" + "0" + "," +
        "KPCALHST=" + "0" + "," +
        "KPDSTHST=" + "0" + "," +
        "ALWBKORD=" + "0" + "," +
        "VCTNMTHD=" + "1" + "," +
        "UOMSCHDL=" + "@UOMSCHDL" + "," +
        "ALTITEM1=" + DBNull.Value + "," +
        "ALTITEM2=" + DBNull.Value + "," +
        "USCATVLS_1=" + DBNull.Value + "," +
        "USCATVLS_2=" + DBNull.Value + "," +
        "USCATVLS_3=" + DBNull.Value + "," +
        "USCATVLS_5=" + DBNull.Value + "," +
        "USCATVLS_4=" + DBNull.Value + "," +
        "USCATVLS_6=" + DBNull.Value + "," +
        "MSTRCDTY=" + "1" + "," +
        "MODIFDT=" + Date.Today.ToString() + "," +
        "CREATDDT=" + Date.Today.ToString() + "," +
        "WRNTYDYS=" + "0" + "," +
        "PRCLEVEL=" + DBNull.Value + "," +
        "LOCNCODE=" + DBNull.Value + "," +
        "PINFLIDX=" + "0" + "," +
        "PURMCIDX=" + "0" + "," +
        "IVINFIDX=" + "0" + "," +
        "INVMCIDX=" + "0" + "," +
        "CGSINFLX=" + "0" + "," +
        "CGSMCIDX=" + "0" + "," +
        "ITEMCODE=" + DBNull.Value + "," +
        "TCC=" + DBNull.Value + "," +
        "PriceGroup=" + DBNull.Value + "," +
        "PRICMTHD=" + "1" + "," +
        "PRCHSUOM=" + DBNull.Value + "," +
        "SELNGUOM=" + DBNull.Value + "," +
        "KTACCTSR=" + "0" + "," +
        "LASTGENSN=" = DBNull.Value + "," +
        "ABCCODE=" + "1" + "," +
        "Revalue_Inventory=" + "1" + "," +
        "Tolerance_Percentage=" + "0" + "," +
        "Purchase_Item_Tax_Schedu=" + DBNull.Value + "," +
        "Purchase_Tax_Options=" + "1" + "," +
        "ITMPLNNNGTYP=" + "1" + "," +
        "STTSTCLVLPRCNTG=" + "0" + "," +
        "CNTRYORGN=" + DBNull.Value + "," +
        "INACTIVE=" + "0" + "," +
        "MINSHELF1=" + "0" + "," +
        "MINSHELF2=" + "0" + "," +
        "INCLUDEINDP=" + "0" + "," +
        "LOTEXPWARN=" + "0" + "," +
        "LOTEXPWARNDAYS=" + "0" + "," +
        "LASTGENLOT=" + DBNull.Value + "," +
        "Lot_Split_Quantity=" + "0.00000" + "," +
        "DEX_ROW_TS=" + Date.Today.ToString() + "," +
        "DEX_RoW_ID=" + "@DEX_RoW_ID" +
        ")"

正如我在評論中提到的那樣,您的字符串組合中有一個錯字:

"KTACCTSR=" + "0" + "," +
"LASTGENSN=" ***=*** DBNull.Value + "," +
"ABCCODE=" + "1" + "," +

將其更改為+應該可以使您重新開始。

隨着=到位,它只是比較兩個字符串是否相等(這當然是false ),然后將該結果轉換為字符串"False"

有幾種方法可以避免將來發生這種情況。 一種是將Option Strict On放在文件頂部,這將警告您這種情況。 另一個將使用更小,更易於管理的字符串塊,以便每個出現問題的可能性都較低。

在調試這樣的事情時,我編譯了代碼,然后使用ILSpy打開了代碼。 它顯示了正在生成的代碼(即字符串比較)以及實際正在比較的字符串。 看到這一點,就很容易找到有問題的= (因為它出現在字符串比較的第一個參數的結尾之后)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM