在学校里,我主要使用 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?