`
code_k
  • 浏览: 9029 次
  • 性别: Icon_minigender_1
  • 来自: lost
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

比较c#中的"==",Equals,ReferenceEquals

阅读更多
今天在单位无事,看<C#高级编程(第三版)>其中讲到"==",Equals,ReferenceEquals。对于ReferenceEquals这个方法很不明白。上网查了一下,终于搞明白了。(ps网上就那一篇转来转去的)
namespace EqualsQ
{
    /// <summary>
    /// 比较c#中的equals,==,ReferenceEquals
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            string a = new string('a', 3);
            string b = new string('a', 3);

            if (a == b) Console.WriteLine("if a == b then print");

            if (object.Equals(a, b)) Console.WriteLine("if Equals(a, b) then print");

            if (object.ReferenceEquals(a, b)) Console.WriteLine("if ReferenceEquals(a, b) then print");


            //应该明白ReferenceEquals方法了吧?
            string c = a;
            if (object.ReferenceEquals(a, c)) Console.WriteLine("string c = a ,ReferenceEquals(a, c) then print");


            //如果还不明白,再接着看
            Test d, e;
            d = new Test();
            e = new Test();
            if (object.ReferenceEquals(d, e)) Console.WriteLine("print");

            e = d;
            if (object.ReferenceEquals(d, e)) Console.WriteLine("print");
            Console.ReadLine();
        }
    }


    public class Test
    {
    
    }
}


个人认为其实ReferenceEquals其实比较的就是实例的内存地址。如果有错误,希望大家指正
分享到:
评论

相关推荐

    详解C#中==、Equals、ReferenceEquals的区别

    C#中Equals , == , ReferenceEquals都可以用于判断两个对象的个体是不是相等,对于相同的基本值类型,==和Equals()比较结果是一样的;由于ReferenceEquals()是判断两个对象的引用是否相等,对于值类型,因为每次判断...

    C#中的==运算符

    在上面的代码中,我们使用了ReferenceEquals方法、Equals方法和==运算符来比较两个字符串。运行结果均为true。这是因为,String类型提供了==运算符的重载,该重载方法调用的是op_equality(string,string)方法。 ...

    “ ==”和.Equals()有什么区别?

    在C#编程语言中,“==”运算符和“.Equals()”方法是两种常见的用于比较对象是否相等的方式,但它们之间存在着重要的差异。理解这些差异对于编写高效且准确的代码至关重要。 首先,让我们来探讨“==”运算符。在C#...

    C#中的Equals、RefrenceEquals和==的区别与联系

    通过上述分析,可以看出,尽管Equals、ReferenceEquals和==在某些情况下会返回相同的结果,但它们之间的细微差别意味着在选择使用哪种方式来比较对象时,我们需要仔细考虑实际的应用场景和对象的类型。正确的选择将...

    c#编程的50个技巧

    在 C# 中,有多种方式来比较对象的相等性,包括 ReferenceEquals, static Equals, instance Equals 和比较运算符。了解这些方法之间的关系可以帮助开发者更好地使用它们。 10. 理解 GetHashCode 方法的缺陷 在 C# ...

    C#中重载相等(==)运算符示例

    为了解决这个问题,我们需要避免在`==`运算符中直接比较`null`,而是使用`object`的`Equals`方法来判断引用是否相等: ```csharp public static bool operator ==(A a, A b) { if (ReferenceEquals(a, b)) { ...

    C#中下笔记

    12. **== 和 Equals**:在C#中,`==`运算符重载通常会调用`Equals`方法,对于字符串,它们比较内容是否相等。`Equals`方法可以被重写,如在字符串中,比较两个字符串的内容。若比较两个对象是否相等,应使用`object....

    C#和Java的区别.pdf

    在C#中,字符串比较使用`==`,如`strOne == "ABC"`,还可以使用`ReferenceEquals`确保两个对象的引用相同。Java中,`==`比较的是字符串引用,若需比较内容,应使用`equals()`方法,如`strOne.equals("ABC")`。 十二...

    C#基础知识 基类Object

    在编程世界中,C#是一种广泛使用的面向对象的语言,它为开发者提供了强大的功能和灵活性。本文将深入探讨C#中的基础知识,特别是与基类Object相关的概念。Object是所有C#类的根,无论你创建何种类,它们最终都将继承...

    提高C#编程水平的50个要点(C#程序员必读)

    理解`ReferenceEquals`,`static Equals`,`instance Equals`和比较运算符(==)之间的关系 - `ReferenceEquals`用于比较两个引用是否指向同一个对象。 - `static Equals`通常用于比较静态类型的实例是否相等。 - `...

    运算符与类型强制转换PPT学习教案.pptx

    运算符与类型强制转换知识点 本节课将涵盖 C# 中的运算符和类型强制转换的...C# 的值类型与引用类型的相等比较可以通过 System.Object 定义的三个比较方法实现,包括 Equals 方法、ReferenceEquals 方法和 == 运算符。

    C#调用C++dll[收集].pdf

    2. **Equals()**:比较两个对象是否相等。默认实现基于引用相等,但可以被子类重写以实现值相等的比较。 3. **Finalize()**:这是一个受保护的方法,用于在对象被垃圾回收之前释放资源。需要注意的是,垃圾回收机制...

    改善C#程序的50种方法.doc

    - 静态Equals()方法首先检查引用,然后比较值。 - 引用类型可重写Equals()和GetHashCode()以实现值语义,并提供operater==操作。 10. **GetHashCode()方法的注意点** - GetHashCode()主要用于散列集合,如...

    C#中Equality和Identity浅析

    在实践中,例如字符串(String)类虽然是一种引用类型,但它的`Equals`方法被重写以实现值语义,即比较字符串内容而不是引用。对于自定义的引用类型,如果希望它们像值类型一样比较,也需要重写`Equals`和`==`运算符。...

    .NET C# 面试题库

    4. **Equals、==、ReferenceEquals**:Equals用于比较两个对象的内容是否相等,==操作符比较两个对象的引用是否相同,而ReferenceEquals直接检查两个对象是否是同一个实例。 5. **虚方法和多态**:虚方法允许子类...

    提高C#编程水平的50个技巧

    9. **对象相等性**:了解ReferenceEquals、static Equals、instance Equals和比较运算符(==)的不同用途,正确处理对象的比较。 10. **GetHashCode的局限**:GetHashCode用于哈希表查找,但不保证不变性,应谨慎设计...

    C#面试宝典,知名培训机构对大部分公司.net开发技术面试的较为全面的总结,附有正确答案和答案参考

    4. **Equals、==、ReferenceEquals**:Equals用于比较两个对象的内容是否相等,对于值类型比较值,对于引用类型比较引用。==操作符同样用于比较值,但对于引用类型,如果两边的引用指向同一对象,结果为true。...

Global site tag (gtag.js) - Google Analytics