是否有理由以这种方式进行类型比较?

aro*_*eer 3 c# equals typeof

我习惯看到旧的代码

if (true)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

直觉上很明显,某人在做出改变时要么懒惰要么过于谨慎.我今天遇到了这个片段,我很好奇这种类型比较之间是否存在功能差异:

private static bool logField(Type t, string fieldname)
{
    if (t.ToString() == typeof (Property).ToString())
    {
        ...
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这样做:

private static bool logField(Type t, string fieldname)
{
    if (t == typeof (Property))
    {
        ...
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

我会说这通常是懒惰 - 但可能不是.例如,您可以在同一个有效文件中使用两种Property类型,但不同的副本.如果typeof(Property)从一个文件加载它但从另一个文件t加载,你的替换会说它们不同但原始代码比较说它们是相同的.

这绝对是一个边缘情况,也是你通常首先想要避免的情况......但这是可能的.