gpt4 book ai didi

.net - VB.NET 语言和什么都没有 : why is it the way it is?

转载 作者:行者123 更新时间:2023-12-04 08:59:10 25 4
gpt4 key购买 nike

这是一个关于 VB.NET 语言的问题。由于我每天都在使用它,因此我只是尝试了解其某些构造背后的动机。

我只是发现这一行:

If myObject Is Nothing then

和这个一样正确:
If Nothing Is myObject Then

结果一样。使用 ildasm,我们可以看到这些行被转换为:
if myObject = null then


if null = myObject then

嗯,但是,在 VB.NET 中,你不能写:
if myObject = Nothing Then

编译器不会接受。

嗯,对我来说, 如果没有什么是我的对象 远不如 明显如果 myObject = 无 .

为什么 VB.NET 作者的想法正好相反?任何提示?

最佳答案

您遇到的问题是 VB.Net 区分了两种类型的对象比较。即引用和值比较。

VB.Net 中的“Is”运算符用于引用比较。当所讨论的值既是引用类型又是可空值时,可以使用此方法。尝试以这种方式比较值类型将导致编译错误。

“=”运算符用于值比较。值比较只能用于在其类定义中定义显式 =、<> 运算符对的类型。等式的实际实现取决于运算符的实现。

C# 采用不同的方法,它使用 == 进行值和引用比较。使用哪个取决于几个因素,包括被比较的值的类型和某些相等方法的实现。

关于.net - VB.NET 语言和什么都没有 : why is it the way it is?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com