• C#判断是否相等


    判断对象是否相等,因为平时用的一般都是int、bool、string类型的数据是否相等。

    同时也是只判断它们的“值”是否相等。于是都是用“==”或是Equal()方法来判断。

    但这并不能判断出是否为同一对象。

    下面是代码分析:

    有图可知,Equal()方法是判断指定对象是否具有相同的值。

    由于两个string是直接赋值,就涉及到字符串池的技术。

    由下图可知a1和a2的地址也是一样。从结果和各项对比中也可以知道:

    string 通过new赋值是会产生不同对象的,只是字符串的值的一致的。

    object.ReferenceQuals()才能真正的判断两个对象是否相等。

    附加:

    下面是通过不同的方式声明了两个值一样的字符串。

    由它们的地址可知,一个char占一个字节,所以a、b、c之间地址才会相差一个byte的大小。

    同时按顺序,c与aa之间的地址相差5个byte,e4到44,这个原因是由于字符串的不可变性。

    所以在执行a+b时,系统为它们相加的值给了一个地址存储,这里的两个字节,

    再把a+b得到的值与c相加,这里是3个字节。所以一共是5个字节。

    所以这也导致了aa与bb为不同的对象。

  • 相关阅读:
    C# 利用VS自带的WSDL工具生成WebService服务类
    七大管理工具
    在线教育系统
    Redis学习一
    酒店管理系统
    大数据学习一
    nginx负载均衡/反向代理学习一
    微服务学习十
    分布式学习一
    Abstract和Virtual和interface , 派生类中重写 override / new关键字
  • 原文地址:https://www.cnblogs.com/xiaoai123/p/6935028.html
Copyright © 2020-2023  润新知