它并没有完全消除拳击和铸造的用途......它只是大大减少了它们.有时候,你不知道的比对类型的东西的编译器的更多.例如,假设您已将相同的事件处理程序连接到许多按钮.使用它并不合理:
public void HandleClickEvent(object sender, EventArgs e)
{
// We know it will always be a button, and we want an exception if it's not
Button button = (Button) sender;
...
}
Run Code Online (Sandbox Code Playgroud)
我们去了 - 铸造并没有死.
同样,在编译时你不知道确切类型并且不能一般地表达它的情况下仍然会发生装箱.最明显的两个例子是:
object,必要时装箱)C#4中的动态类型:
dynamic d = CreateDynamicObject();
int x = d.Foo(); // The dynamic call would have to box if necessary,
// the conversion will unbox
Run Code Online (Sandbox Code Playgroud)所以拳击也没死.
如果你只是谈论在集合中存储值,那么拳击和转换现在在代码中出现的次数确实比以前少得多.但并非所有东西都在集合中,而且泛型在集合之外也是有用的.
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |