在我看来,这个C#程序应该输出“True”,但实际上它输出“False”,如何解释?
顺便说一句,我问了ChatGPT(免费版)和Gemini(免费版),他们都给出了“正确”的答案。
static void Main(string[] args)
{
object obj = System.IO.FileMode.Create;
Console.WriteLine(obj == (object)System.IO.FileMode.Create);
}
简而言之 - 因为拳击。
装箱是将值类型转换为类型对象或该值类型实现的任何接口类型的过程。当公共语言运行时 (CLR) 装箱值类型时,它会将值包装在 System.Object 实例内并将其存储在托管堆上
装箱后,您将获得
object
,当比较对象时,它们是通过引用进行比较,而不是通过值进行比较。