在Visual Basic中,IS
运算符与使用Object.ReferenceEquals
确定两个变量是否引用同一对象之间的差异(如果有)是什么?
据我可以从MS文档中看到它们具有相同的效果,但我认为IS
更快,因为它不涉及函数调用。
答案 0 :(得分:0)
Is运算符确定两个对象引用是否引用相同 宾语。但是,它不执行值比较。如果object1和 object2都指向完全相同的对象实例,结果为True; 如果他们不这样做,结果就是假的。
也可以与TypeOf关键字一起使用来生成TypeOf ...是表达式,它测试对象变量是否与数据类型兼容。
见下文。
在比较s1和s2时同时使用Is和Object.ReferenceEquals返回true。
但是,在比较s3和s4时返回true,但Object.ReferenceEquals方法返回false,因为尽管它们具有相同的字符串值,但该字符串未被实现。
String s1 = "String1";
String s2 = "String1";
Console.WriteLine("s1 = s2: {0}", Object.ReferenceEquals(s1, s2));
Console.WriteLine("{0} interned: {1}", s1,
String.IsNullOrEmpty(String.IsInterned(s1)) ? "No" : "Yes");
String suffix = "A";
String s3 = "String" + suffix;
String s4 = "String" + suffix;
希望这有帮助。