You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:22:38