我想知道为C#转换对象的更好方法是什么:
MyClassName test = (MyClassName)object;
MyClassName test = object as MyClassName;
Run Code Online (Sandbox Code Playgroud)
我已经知道如果你做第一种方式,你得到一个例外,第二种方式它将test设置为null.但是,我想知道为什么一个在另一个?我看到第一种方式很多,但我喜欢第二种方式,因为那时我可以检查空...
如果没有"更好的方法",那么使用这种或那种方式的准则是什么?
没有任何官方指南,但这是我如何做到这一点.
如果你真的想要异常(即你认为对象永远不会是一个不同的类型MyClassName),请使用显式强制转换.示例(WinForms):
private void checkbox_CheckedChanged(object sender, EventArgs e) {
// We've hooked up this event only to CheckBox controls, so:
CheckBox checkbox = (CheckBox)sender;
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果要处理不MyClassName优雅的类型,请使用as关键字.