繁体   English   中英

VB.NET并使用“ Dim”键入推断

[英]VB.NET and type inference using “Dim”

我来自C#背景,我真的很喜欢C#3.0的类型推断。 我正在尝试在VB.NET中做类似的事情(其中一些可能出现),但是在某些情况下,编译器在推断类型方面似乎并不那么出色。

例如,我有一个返回System.Guid类型对象的方法。 在C#中,我会这样做,并且变量“ prop”将通过推理成为Guid类型。

var prop = RegisterProperty<Guid>(...);

但是,如果我在VB.NET中做类似的事情:

Dim prop = RegisterProperty(Of Guid(...)

我得到道具作为类型System.Object。 我已经使用了一些VB.NET项目设置,但是它唯一改变的是稍后将其用作Guid时是否警告该对象属于Object类型。

有任何想法吗? 我认为使用泛型应该可以使编译器毫无疑问地告诉我们prop应该是什么类型。


@J Cooper:好的,我确实启用了该设置,但是我只是重新阅读了该编译器选项的文档,并且显示为“指定是否在变量声明中允许局部类型推断”。 我相信它对我不起作用的原因是我在类中声明了静态字段。 我想即使它们在声明时已初始化,但编译器当时不支持类型推断。 游民。

我通过“玩过VB.NET项目设置”来假设您已经做到了: 在VB.NET中键入推断

如果没有,可能会有所帮助

您在下面提到要在静态变量声明中执行此操作。 那在C#中不起作用,并且会在VB.NET中为您提供Object(例如,实例和静态变量)。

如果VB将类型推断为Object,则至少需要在类文件的顶部打开Option Strict。 完成此操作后,您应该看到类字段不支持类型推断。 以下内容引起编译器错误“ Option Strict On要求所有变量声明都具有As子句”。

Public Shared foo = "Test"

通常,应该在类/模块级别字段的方法和“公共/私有/朋友”内部使用Dim。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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