Visual Basic中Object.ReferenceEquals和IS运算符之间的区别

时间:2014-08-07 09:09:47

标签: vb.net object equality

在Visual Basic中,IS运算符与使用Object.ReferenceEquals确定两个变量是否引用同一对象之间的差异(如果有)是什么?

据我可以从MS文档中看到它们具有相同的效果,但我认为IS更快,因为它不涉及函数调用。

1 个答案:

答案 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;

希望这有帮助。