C#,将 Enum 转换为对象并使用 == 运算符的问题

问题描述 投票:0回答:1

在我看来,这个C#程序应该输出“True”,但实际上它输出“False”,如何解释?

顺便说一句,我问了ChatGPT(免费版)和Gemini(免费版),他们都给出了“正确”的答案。

static void Main(string[] args)
{
  object obj = System.IO.FileMode.Create;
  Console.WriteLine(obj == (object)System.IO.FileMode.Create);
}
c#
1个回答
0
投票

简而言之 - 因为拳击

装箱是将值类型转换为类型对象或该值类型实现的任何接口类型的过程。当公共语言运行时 (CLR) 装箱值类型时,它会将值包装在 System.Object 实例内并将其存储在托管堆上

装箱后,您将获得

object
,当比较对象时,它们是通过引用进行比较,而不是通过值进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.