Vb.net 什么都不等于违约?

Vb.net 什么都不等于违约?,vb.net,Vb.net,在VB.NET中将变量设置为nothing时会发生什么? 什么都不等于默认值是真的吗?或者我在这里遗漏了什么吗?它在值类型或结构上等于默认值,在对象类型上等于null。如果它是值类型(如整数、双精度等),将变量设置为nothing会将其设置为默认值 如果它是一个引用类型,它实际上将被设置为Nothing(空值) 在: 不给变量集赋值 将其设置为其默认值 声明的类型 如果变量是引用的 类型,值为Nothing表示 该变量与 任何物体。该变量具有空值 价值观 假设VB.NET与C#非常相似,null

在VB.NET中将变量设置为nothing时会发生什么?
什么都不等于默认值是真的吗?或者我在这里遗漏了什么吗?

它在值类型或结构上等于默认值,在对象类型上等于null。

如果它是值类型(如整数、双精度等),将变量设置为nothing会将其设置为默认值

如果它是一个引用类型,它实际上将被设置为Nothing(空值)

在:

不给变量集赋值 将其设置为其默认值 声明的类型

如果变量是引用的 类型,值为Nothing表示 该变量与 任何物体。该变量具有空值 价值观


假设VB.NET与C#非常相似,
null
,在VB.NET中称为
Nothing
,这意味着引用不指向任何东西。所有类型在声明但未分配时都有默认值:例如,
int
s的默认值为
0
。引用类型的默认值为空值
Nothing
。因此,引用类型的未赋值变量的值为
Nothing
(null)。

Eric Lippert在博客上发表了一篇很好的文章


没有什么不等于所有情况下的默认值

如果你在C中有这样一个结构,你会被它咬到#

然后用下面的VB替换它(它可以编译)

结果会怎样


答案是它将是0,而不是null。

-1。这是一篇很棒的文章,但它是关于VBScript的,问题是关于Visual Basic.Net的。它们的行为完全不同-VBScript只有
变量
而不是强类型变量。@Mark:答案是一样的,因为它是VB.Net或VBScript。链接对我不起作用。尝试
int? result = (a != null ? a.b : (int?)null);
Dim result As Integer? = If(a IsNot Nothing, a.b, Nothing)