(MyClassName)对象与对象为MyClassName

Mat*_*yle 4 .net c#

我想知道为C#转换对象的更好方法是什么:

MyClassName test = (MyClassName)object;

MyClassName test = object as MyClassName;
Run Code Online (Sandbox Code Playgroud)

我已经知道如果你做第一种方式,你得到一个例外,第二种方式它将test设置为null.但是,我想知道为什么一个在另一个?我看到第一种方式很多,但我喜欢第二种方式,因为那时我可以检查空...

如果没有"更好的方法",那么使用这种或那种方式的准则是什么?

Tho*_*mas 8

没有任何官方指南,但这是我如何做到这一点.

如果你真的想要异常(即你认为对象永远不会是一个不同的类型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关键字.