• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
无忧岛主
实践是检验真理的唯一标准
博客园    首页    新随笔       管理    订阅  订阅
C#数据类型常见问题

1.C#如何判断object类型是相等的?

这里有两个关键的式子,s==t和s.Equals(t),下面我们来逐一分析

对于s==t,系统会调用object.Equals( object, object )这个静态方法:
public static bool Equals(object objA, object objB)
{
    return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}

而object是引用类型,引用类型的变量,遇到等号运算符(==)时,依据内存地址判等
s和t两个值是在不同时刻由1装箱而来,所以地址不一样,所以objA == objB得到结果false,返回False

而对于s.Equals( t ),由于bool.Equals (object obj)实例方法是一个virtual(虚方法),所以在运行时会调用Int32.Equals(object obj):
public override bool Equals(object obj)
{
    return ((obj is int) && (this == ((int) obj)));
}
s和t经过转换,得到了数字1,接着进行数字之间的等号运算,得到True
如果本文引用了你的文章而未注明,请及时联系我。
posted on 2015-06-12 11:21  无忧岛主  阅读(310)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3