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




