所以,我遇到了以下「問題」,我真的很好奇它背後的原因。明確的投射算子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