vb.net - 使用 Nothing 实例化变量,然后分配一个 New 对象实例

标签 vb.net coding-style

查看一些旧的 VB.Net 代码,我注意到一种奇怪的模式,让我摸不着头脑。

Dim objMyObject As Namespace.Child.ChildType = Nothing
objMyObject = New Namespace.Child.ChildType

(维度和分配之间没有附加代码。)

似乎首选的样式是在一行上执行这两项操作,或者跳过 = Nothing。如下:

Dim objMyObject As Namespace.Child.ChildType = New Namespace.Child.ChildType

或者

Dim objMyObject As Namespace.Child.ChildType
objMyObject = New Namespace.Child.ChildType

或者,按照@helrich的建议

Dim objMyObject As New Namespace.Child.ChildType

这样做有什么特别的值(value)吗?或者这是原始程序员习惯 VB6 做事方式的一个实例?

<小时/>

在 VB6 中,在一行上对变量进行尺寸标注和实例化被认为是有问题的,因为当访问变量时,它会重新运行实例化(如果需要)——实际上,以这种方式标注尺寸的变量永远无法测试为 Nothing,因为将根据需要创建新实例。但是,VB.Net 不保留此约定。

最佳答案

不,这毫无意义。 CLR 已经提供了变量初始化为 Nothing 的硬保证。

否则完全无害,抖动优化器将完全删除分配的代码。因此,如果原作者更喜欢这种风格,那也没关系。也许他以前是一名 C# 程序员,不理解该语言中的明确赋值规则。 VB.NET 也进行一些检查,但没有那么严格。请检查这是否是您也应该遵循的团队标准,希望不是。

关于vb.net - 使用 Nothing 实例化变量,然后分配一个 New 对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914256/

相关文章:

c# - 将复选框添加到 gridview 的标题

.net - 使用TCP或UDP套接字的VB 2008在线聊天应用程序

c++ - 常量是否应该传播到成员指针指针对象?

c# - Windows 窗体 - 在窗体之前显示对话框

mysql - 如何使用http请求查询字符串属性来过滤where子句

vb.net - 嵌套表格布局面板

asp.net - 尝试为文件…database1.mdf附加自动命名的数据库失败

c++ - 分配给返回引用的函数

r - 在 R 中警告一次

list - 在最大化函数的列表中查找元素的更多pythonic方法