2

在学校里,我主要使用 Java、C 和 Python。现在我正在工作,我一直在使用.Net。有时我必须从事 Visual Basic 项目,这是一次愉快的学习经历,但我似乎有时会被一些事情挂断。我的主要问题之一来自 Visual Basic 使用Nothing而不是null在 C# 和 F# 中使用的事实。

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

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

4

3 回答 3

3

请记住,VB 基于原始的 Basic,它旨在成为真正的BASIC,非程序员的人很容易理解。

如果您尝试向非程序员解释什么是值,这更有意义。

“X的价值是什么”

或者

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

于 2012-08-09T14:56:11.397 回答
1

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

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

于 2012-08-09T14:56:50.727 回答
0

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

于 2012-08-09T14:56:37.573 回答