所以,我遇到了以下“问题”,我真的很好奇它背后的原因。明确的投射算子vs与T
考虑以下几点:
public class B
{
}
public class A<T>
{
private void AFunc(T t)
{
FuncRequireB((B)t); // Not allowed
FuncRequireB(t as B); // Allowed
}
private void FuncRequireB(B b)
{
}
}
我知道优雅的解决方案是在类定义T作为B,但我想知道为什么“(B)t”和“T为B”在这种情况下不同。我知道“as”是安全的,所以如果转换无法完成,它可以生成为null,另一方面,如果转换不成功,显式强制抛出异常,但为什么编译器应该关心这个呢?在这种情况下,我看不到他们之间的区别。
预先感谢您!
[C#泛型简介](http://msdn.microsoft.com/en-us/library/ms379564%28v=vs.80%29.aspx) – MethodMan 2014-11-25 14:17:10
用'T'做的一切都比较好,但是再次,我来自英国。 – 2014-11-25 14:22:17