在一行中强制转换和使用结果
本文关键字:转换 结果 一行 | 更新日期: 2023-09-27 17:54:15
我想转换WrapPanel
wp = (WrapPanel)topSP.Children[0];
wp.Children.Add(txtB1);
让它看起来像这样
topSP.Children[0](WrapPanel).Add(txtB1);
这可能吗?
((WrapPanel)topSP.Children[0]).Children.Add(txtB1);
请注意,可能有更好的方法。
是的,你可以,但是所有这些属性和类型转换的"链接"在追逐空引用和索引超出范围异常时可能会导致大量工作。将它们放在单独的行中,并检查空值和索引范围。
所以即使这可能有效:
((WrapPanel)topSP.Children[0]).Children.Add(txtB1);
这样做更安全:
if(topSP.Children.Count > 0)
{
var wrapPanel = topSP.Children[0] as WrapPanel;
if(wrapPanel != null)
{
wrapPanel.Children.Add(txtB1);
}
}
将强制类型转换为圆括号就可以了-
((WrapPanel)topSP.Children[0]).Children.Add(txtB1);
另一种改变类型的方法是:
(topSP.Children[0] as WrapPanel).Children.Add(txtB1);
这与强制转换不同,如果topSP.Children[0]
不是WrapPanel
,这将抛出NullReferenceException
,就像在这种情况下(topSP.Children[0] as WrapPanel) == null
一样。