似乎 C# 编译器根据调用方法的方式不同地推断类型:
void Foo<T>() where T : Bar
{
var instance = new T()
{
ID = 1
}.
ExtensionMethod();
}
在这种情况下,编译器似乎推断出实例的类型是 Bar,因为我有一个声明 ExtensionMethod 的类 Bar。
void Foo<T>() where T : Bar
{
var instance = new T()
{
ID = 1
};
instance.ExtensionMethod();
}
在这种情况下,编译器推断实例的类型是 T,这也是我希望它在第一种情况下所做的事情。为什么会有这样的差异?