You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C#中与DirectCast等效的语法是什么?附VB.NET代码转译需求

没问题,我来帮你把这段VB.NET代码转换成对应的C#实现~

首先拆解下你的原VB代码逻辑:它会检查ViewState["SelectedRecords"]是否存在值,存在的话就通过DirectCast将其强制转换为ArrayList类型,不存在则初始化一个新的空ArrayList

对应的C#代码可以这样写:

ArrayList arr;
if (ViewState["SelectedRecords"] != null)
{
    // 对应VB里的DirectCast,是严格的显式类型转换
    arr = (ArrayList)ViewState["SelectedRecords"];
}
else
{
    arr = new ArrayList();
}

如果你喜欢更简洁的写法,还可以用三元运算符一行搞定:

ArrayList arr = ViewState["SelectedRecords"] != null ? (ArrayList)ViewState["SelectedRecords"] : new ArrayList();

额外补充个小知识点:在C#里,DirectCast对应的是显式强制类型转换(就是上面用括号包裹类型的写法),它和VB的DirectCast逻辑一致——要求目标对象必须是该类型的实例,否则会抛出InvalidCastException

如果想要更安全的转换(避免类型不匹配时抛出异常),可以用as运算符结合null合并运算符??,写法如下:

// as转换失败会返回null,此时自动创建新的ArrayList
ArrayList arr = ViewState["SelectedRecords"] as ArrayList ?? new ArrayList();

你可以根据自己的业务需求选择合适的写法哦~

内容的提问来源于stack exchange,提问作者doria_aries

火山引擎 最新活动