Mar*_*ter 7 .net c# types casting as-keyword
我发现使用以下内容:
TreeViewItem i = sender as TreeViewItem;
if(i != null){ ... }
Run Code Online (Sandbox Code Playgroud)
比以下更容易编写和理解:
if(sender.GetType() == typeof(TreeViewItem)){
TreeViewItem i = (TreeViewItem)sender;
...
}
Run Code Online (Sandbox Code Playgroud)
有没有令人信服的理由不使用第一个结构?
完全没有 - 它让你有机会验证转换(强制转换)是否正常.如果你这样做
TreeViewItem i = (TreeViewItem) sender;
Run Code Online (Sandbox Code Playgroud)
如果演员表失败,你可能会得到一个例外.
一般来说,这两个片段并不相同.TreeViewItem i = sender as TreeViewItem将产生正确的结果,即使sender是一个盛大隆重的孩子TreeViewItem,而sender.GetType() == typeof(TreeViewItem)将true 只当sender是恰恰TreeViewItem和其任何可能的子类.