考虑遵循简单的类C#智能感知不正确的方法,它有一个动态的参数
public class SomeType
{
public static int Fn(dynamic arg) { return 1; }
}
及后续声明
dynamic value = 10;
var a = SomeType.Fn(null);
var b = SomeType.Fn(value);
的类型是正确的(INT)
类型的b是错误的(动态)
我不能在b上使用智能感知,直到我做一个虚拟重铸(int)SomeType.Fn(值)为已经原型的返回一个整数。
问题是,为什么参数中的动态会使intellisense改变我的函数原型签名?
即使我将一个动态插入到函数中,该函数只能返回其原型中声明的内容,这是一个错误吗?
我当前解决方法如下
var b = SomeType.Fn((object)value);
它看起来像一个错误。你在使用VS2015吗? –
它不会改变b的类型,它仍然是'int'(使用'b.GetType()'),也许是intellisense上的错误? –
对我来说,看起来不像是一个Intellisense错误。智能感知行为与编译器的行为相匹配,不是吗? – hvd