2017-03-09 33 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

相关问题