我看到了这个有趣的问题 ,它讨论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 所说,编译器确实会发出警告。
但是,嘿,类型安全发生了什么?我假设在方法级别存在类型安全,但是已经声明的类的全局上下文呢?T
我的意思是,如果有人问我,我想那里应该有错误而不是警告。
为什么编译器允许这样做?(我很想听到一个合理的答案)