Visual Basic,为什么没有?

时间:2012-08-09 14:50:17

标签: c# .net vb.net

在学校,我主要使用Java,C和Python。现在我正在工作,我一直在与.Net合作。偶尔我必须处理Visual Basic项目,这是一个愉快的学习经历,但我似乎不时会挂在一些东西上。我的一个主要问题来自于Visual Basic使用Nothing而不是null,就像在C#和F#中一样。

对我来说,

Nothingnull似乎基本相同,但在Visual Basic中可以将不可为空的值类型设置为Nothing并且值将为设置为其默认值(即整数为0)。在C#中,如果将非可空值类型设置为null,则会出现编译时错误。拥有数据类型的默认值但是创建类型Nullable并将值设置为DBNull.Value以便使用数据库会让我失望。从Nothing切换到null并不直观。我查看了在C#和VB中将字符串设置为null / Nothing的IL代码,并且每次将字符串设置为ldnull时。因此,为什么Visual Basic使用Nothing代替null和其他.Net语言一样,有什么潜在的原因吗?

tl; dr为什么Visual Basic使用Nothing而不是null

3 个答案:

答案 0 :(得分:3)

请记住,VB是基于原始的Basic,它本来是真正的 BASIC ,很容易被非程序员理解。

如果你试图向非程序员解释一个值是什么,哪个更有意义。

“X的值是无”

“X的值为空” - >导致“嗯”?什么是NULL ??

答案 1 :(得分:1)

如果您想在C#中复制nothing的功能,请尝试使用default(int),其中int是变量的类型。

当类型未知时,通常与泛型一起使用。

答案 2 :(得分:0)

Nothing是VB6和早期版本的VB中使用的关键字。我不是他们为什么选择这个术语,但是他们将它保留在.NET中,因为它是核心VB语言语法和向后兼容性的一部分。也许最初选择它是因为这对新手来说是一个更简单的术语?