gpt4 book ai didi

c# - 转换为 .NET 引用源中的对象

转载 作者:IT王子 更新时间:2023-10-29 03:44:29 25 4
gpt4 key购买 nike

我正在浏览 OperatingSystem.cs .NET 引用源中的文件,并在 line 50 中注明此代码:

if ((Object) version == null)

version 是类 Version 的一个对象,这意味着 version 派生自 Object。如果是这样,它不是多余的转换为 Object 吗?不就跟这个一样吗?

if (version == null)

最佳答案

不,它不等价 - 因为 Version 重载了 == 运算符。

将左操作数转换为 Object 的代码片段等同于:

if (Object.ReferenceEquals(version, null))

... 而不是在 Version 中调用 operator== 实现。无论如何,这很可能将进行无效检查作为其第一个操作,但这只是绕过了额外的级别。

在其他情况下,这可能会产生非常显着的差异。例如:

string original = "foo";
string other = new string(original.ToCharArray());
Console.WriteLine(original == other); // True
Console.WriteLine((object) original == other); // False

关于c# - 转换为 .NET 引用源中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com