比较具有相同类型的对象评估为 false
Comparing objects with same type evaluates for false
我在 if 语句中有这段代码,它的计算结果为 false,但我不知道为什么
&& (typeof(TResponse).Equals(typeof(MediatorResponse)))
使用 等于 因为我打算通过参考进行比较
我试着把它们放在手表里,这是我的线索
typeof(TResponse)
似乎是 MediatorResponse'1
而 typeof(MediatorResponse)
似乎是 MediatorResponse
这两个还是同一类型吗?
为什么 visual studio 把 1 放在另一个上?
C# 允许您拥有具有相同名称的不同类型(如果一个或多个泛型),并且泛型类型具有不同数量的泛型参数。比如下面都是不同的类型:
class Foo{}
class Foo<T>{}
class Foo<T1, T2>{}
后跟数字的反引号字符用于泛型类型以生成唯一名称,并指示该类型具有的泛型参数的数量。所以在上面的示例中,名称将是:
class Foo{} // Name is Foo
class Foo<T>{} // Name is Foo`1
class Foo<T1, T2>{} // Name is Foo`2
我在 if 语句中有这段代码,它的计算结果为 false,但我不知道为什么
&& (typeof(TResponse).Equals(typeof(MediatorResponse)))
使用 等于 因为我打算通过参考进行比较
我试着把它们放在手表里,这是我的线索
typeof(TResponse)
似乎是 MediatorResponse'1
而 typeof(MediatorResponse)
似乎是 MediatorResponse
这两个还是同一类型吗?
为什么 visual studio 把 1 放在另一个上?
C# 允许您拥有具有相同名称的不同类型(如果一个或多个泛型),并且泛型类型具有不同数量的泛型参数。比如下面都是不同的类型:
class Foo{}
class Foo<T>{}
class Foo<T1, T2>{}
后跟数字的反引号字符用于泛型类型以生成唯一名称,并指示该类型具有的泛型参数的数量。所以在上面的示例中,名称将是:
class Foo{} // Name is Foo
class Foo<T>{} // Name is Foo`1
class Foo<T1, T2>{} // Name is Foo`2