我看到this interesting question其中談到了T
聲明在課堂上的水平和同樣的字母T
(不同的含義)在方法級別。泛型類型衝突?
所以我做了一個測試。
static void Main(string[] args)
{
var c = new MyClass<int>(); //T is int
c.MyField = 1;
c.MyProp = 1;
c.MyMethod("2");
}
public class MyClass<T>
{
public T MyField;
public T MyProp { get; set; }
public void MyMethod<T>(T k)
{
}
}
由於Eric said,編譯器會發出警告。
但是,嗨,類型安全怎麼了?我假設在方法級別有一個類型安全,但是012xx已經被聲明的類的上下文又如何呢?
我的意思是,如果有人問我,我猜應該有一個錯誤那裏沒有警告。
爲什麼編譯器允許這樣做? (我很想聽到合理的答案)
我相信這與聲明方法變量的方法大致相同,名稱與已經存在的類字段名稱相同 - 但此方法可行,但編譯器也會警告您 – sll 2013-02-26 09:19:44
您可以擴展「但是,嗨,類型安全性發生了什麼? ?您擔心什麼類型的安全違規行爲? – AakashM 2013-02-26 10:18:31
將'public void MyMethod(T k)'改爲'public void MyMethod(T k)'並且應該有一個錯誤:-) –
Carsten
2013-02-26 10:38:58