繁体   English   中英

intellisense-VB.NET visual Studio 2013中的自动生成的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM