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