Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4049.00元
C# 语法
大旭发起了问答2023-03-30
2
回复
275
浏览

object a = "123";

string b = "123"

问:a与b是否相等?  a与b的区别是什么?

 

老师你好,想问一下老师这道题该怎么答?

所有回复
  • 老师_Trigger 2023-04-01

    同学你好,可以这样回答:

    • 变量a是一个object类型。当将字符串"123"赋值给变量a时,实际上是发生了装箱操作。即将值类型转换为引用类型object。这是因为在.NET中,所有的值类型都继承自System.ValueType,间接地继承自System.Object,因此可以将它们的值存储在object类型的变量中。但是,由于在装箱操作中对值类型进行了封装,所以在比较时,需要先将它们拆箱为具体类型,然后再进行比较。因此,要比较变量a和b是否相等,需要将变量a显式地转换为字符串类型,然后再进行比较。例如:

      if (a.ToString() == b)
      {
          Console.WriteLine("a and b are equal");
      }
    • 变量b是一个string类型。string是引用类型,可以直接存储字符串的值。在比较时,只需要比较字符串的内容是否相等即可。例如:

      if (a.Equals(b))
      {
          Console.WriteLine("a and b are equal");
      }

    综上所述,a和b都存储了字符串"123"的值,但它们的数据类型不同,比较时需要注意类型的转换和拆箱操作。

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 大旭 2023-04-01

    老师你好,你说“当将字符串"123"赋值给变量a时,实际上是发生了装箱操作”

    我试了一下,object a = "123"没有发生装箱操作

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!