考慮遵循簡單的類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