2017-03-09 59 views
3

在下面的代碼:不返回的值是一個結構不會產生警告

Public Structure MyDate 
    Public year As Integer 
    Public month As Integer 
End Structure 

Public Function GetMyDate() As MyDate 

End Function 

Public Function GetSystemDate() As Date 

End Function 

Public Function GetListview() As ListView 

End Function 

Public Function GetInteger() As Integer 

End Function 

的Visual Studio 2015年發出警告說GetSystemDate,GetListview和GetInteger「不會在所有代碼路徑返回一個值「但它在GetMyDate上保持沉默。

有沒有明智的理由呢,或者它是一個錯誤?

+2

類似的bug(所有結構)幾年前報道(參見:[BC42105不火的結構(https://connect.microsoft.com/VisualStudio/feedback/details/488430/bc42105 ),並且據說是爲VS2010修復的。但是,看起來用戶定義的結構在VS2010及更高版本中仍然存在問題。你可以嘗試報告它。 – TnTinMn

+0

@TnTinMn:您應該將其作爲答案發布。這是迄今爲止最正確的一個。 –

+1

這是設計。在Project> Properties> Compile選項卡中可以看到。警告設置被很好地命名爲「函數返回引用類型」和「函數返回內在值類型」。所以不是結構。不得不保持與以前的VB版本兼容並不是太高興。這個設置頁面在VS2017 btw中被嚴重破壞,這也不算什麼喜悅。誰測試這個東西,看起來像沒有人。 –

回答

3

幾年前(參見:BC42105 does not fire for structures)報告了一個類似的錯誤(對於所有結構),並且據推測在VS2010中是固定的。

與我在評論部分發布的內容相反,此錯誤不限於用戶定義的類型。看起來,任何不是數字類型的結構都會遭受這個錯誤的影響。例如,這也不會產生警告。

Function colr() As System.Drawing.Color 
End Function 
+0

我現在註冊了一個新問題https://connect.microsoft.com/VisualStudio/feedback/details/3128109 – Gwynge

相關問題