vb.net中is 运算符有什么用途

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:03:36
module module1
sub main()
dim obj1 as new object
dim olj2 as new object
dim obj3,obj4,ojb5 as object
dim checkis(3) as boolean
obj3=obj1
ojb4=ojb1
ojb5=ojb2
checkis(0)=obj1 is obj2
checkis(1)=obj3 is obj4
checkis(2)=obj4 is ojb5
checkis(3)=obj1 is obj3
console.writeline("数组checkis各个元素的值分别为:{0},{1},{2},{3}",checkis(0),checkis(1),checkis(2),checkis(3))
end sub
end module
麻烦解释一下这段程序有什么作用
checkis(0)=obj1 is obj2 '返回false ,obj1、obj2引用的是同一类型那为什么会返回false呢?
checkis(1)=obj3 is obj4 '返回true
checkis(2)=obj4 is ojb5 '返回false ,obj4、obj5引用的是同一类型那为什么会返回false呢?
checkis(3)=obj1 is obj3 '返回true
不好意思,还是不是很明白
谢谢你的详细解释

你的代码中“checkis(0)=obj1 is obj2”的意思是如果obj1和obj2引用的是同一个对象,则checkis(0)的返回值为“true”,否则为“false”。下面几句以此类推。

以下是MSDN中的备注:
Is运算符确定两个对象引用是否引用同一个对象。但是,它不执行值比较。如果 object1 和 object2 引用同一个对象实例,则 result 为 True;如果它们不引用同一个对象,则 result 为 False。该运算符和TypeOf…Is一样,也只适用于引用类型。

用法:
Dim i As String = "Hello"
Dim j AS String = "Hello"
Dim k as String = "Hello world"
Console.WriteLine(i Is j) '输出:True
Console.WriteLine(i Is k) '输出:False
k = j
Console.WriteLine(i Is k) '输出:True