[英]intellisense - autogenerated properties in VB.NET visual Studio 2013
我正在使用Visual Studio 2013,并尝试通过仅使用以下代码来跳过手动实现getter和setter的方法:
Public Class VerifiableText
Public Property verifier() As IVerifier
Public Property text() As String
Function verify() As Boolean
Return verifier.verify(text)
End Function
End Class
到目前为止,这似乎还算不错,但是我想知道以下行为:
如果我使用初始化我的班级
Dim input = New VerifiableText
如果我输入“ input”,则intellisense无法识别我的属性。 然后按Ctrl +空格键。
但是,如果我使用
Dim input As VerifiableText
input = New VerifiableText
intellisense正在正确建议我的财产。
这并不是真正的问题,但是我想了解这种行为。
谢谢!
在这种情况下,它可能与Scope
和编译器选项有更多关系,而不仅仅是属性样式。 但是归结为VS不知道对象的实际类型,以便在Intellisense中提供列表项。
启用Option Infer
后,VB将推断局部变量的类型。 因此对于:
Sub SomeSub
Dim v = New VerifiableText
...您尚未声明类型,但是VB从分配中推断出它。 如果禁用Option Infer
,则v
是类型Object
,并且VS IDE无法提供Intellisense帮助(此处可能就是这种情况)。 请注意,要对此进行编译,还必须关闭Option Strict
,否则会得到未声明Type的错误。
如果这是模块级别的变量,则情况会稍有不同:
Private v = New VerifiableText
Sub SomeSub...
' ...
v
仍为Type Object
因为Option Infer
仅适用于局部变量。 您还会从Option Strict
得到一个错误,因为未声明Type。 解决方案是在声明中包括Type:
Private v As New VerifiableText ' As... is required for Option Strict
Dim v As New VerifiableText ' As... is optional under Option Infer
在这两种情况下,您都已为v
声明了Type,因此现在Intellisense应该可以使用了。 但是,您应该打开Option Strict
,IDE /编译器将帮助您解决丢失的类型声明(以及其他问题)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.