2008-09-27 34 views
33

我正在調用一個返回字符串的函數,但它實際上只返回它應該返回的字符串的第一個字符。爲什麼返回字符串的VB.Net函數實際上只返回單個字符?

下面是一個示例代碼片段重現這個問題我遇到:

Public Function GetSomeStringValue(Value as Integer) As String 
    ... Code Goes here 
    Return Some_Multicharacter_string 
End Function 

函數調用看起來像:

SomeStringValue = GetSomeStringValue(Value) 

這是爲什麼沒有返回整個字符串?

+1

另一個不喜歡參數和數組索引看起來相同的語言的原因... – 2008-09-27 01:26:18

回答

12

注意:此答案最初由OP,Kibbee編寫,作爲自我回答。但是,它是寫在問題的主體中,而不是作爲一個單獨的答案。由於OP拒絕包括主持人在內的其他用戶的重複請求根據網站規則重新發布,因此我自己重新發布。

嘗試上百種不同的事情,重構我的代碼,通過調試器分步執行代碼很多次,甚至有同事查問題後,我終於在一個天才的閃光,發現答案。

在當我重構代碼的某個時刻,我改變了擺脫價值參數的功能,把它當作如下:

Public Function GetSomeStringValue() As String 
    ... Code Goes here 
    Return Some_Multicharacter_String 
End Function 

不過,我忘了刪除,我是傳遞參數調用函數時:

SomeStringValue = GetSomeStringValue(Value) 

編譯器並沒有抱怨,因爲它解釋我在做什麼與調用不帶括號的功能,這是從VB6的天遺留功能。然後,將Value參數轉換爲函數返回的字符串(又名字符數組)的數組索引。

所以我刪除了參數,一切運行良好:

SomeStringValue = GetSomeStringValue() 

我張貼這讓其他人會認識到這個問題時,/如果他們遇到它,並能多解決問題比我更快。我花了好一段時間才解決,我希望我可以節省一些時間。

相關問題