如何将sender对象转换为ListControlItem对象?VB转C#类型转换报错解决
解决VB.NET转C#的类型转换错误
问题出在C#的强类型特性上:VB.NET允许将Object类型隐式转换为ListControlItem,但C#要求必须显式转换才能完成这个赋值操作。
你可以通过两种方式修正代码:
方式1:强制类型转换(适用于确定sender一定是ListControlItem类型的场景)
如果能保证传入的sender必然是ListControlItem实例,直接用强制转换:
private ListControlItem mLastSelected = default; private void SelectionChanged(object sender) { if (mLastSelected != null) { mLastSelected.Selected = false; } // 显式强制转换object到ListControlItem mLastSelected = (ListControlItem)sender; }
方式2:使用as关键字(更安全,转换失败返回null)
如果不确定sender的类型,用as关键字可以避免类型转换异常,转换失败时mLastSelected会被设为null:
private ListControlItem mLastSelected = default; private void SelectionChanged(object sender) { if (mLastSelected != null) { mLastSelected.Selected = false; } // 使用as进行安全转换 mLastSelected = sender as ListControlItem; }
内容的提问来源于stack exchange,提问作者Juliano Costa
相关产品推荐
相关产品推荐

