gpt4 book ai didi

c# - 索引对象的安全导航

转载 作者:太空狗 更新时间:2023-10-29 22:30:58 24 4
gpt4 key购买 nike

随着 Roslyn 的引入,C# 获得了安全导航运算符的好处。这对于使用点符号的对象来说非常棒,例如

MyClass myClass = null;
var singleElement = myClass?.ArrayOfStrings[0];

在这种情况下,myClass 为空,但安全运算符将我从异常中拯救出来。

我的问题是,如果您有一个索引对象,是否有安全导航运算符的等效实现?需要这个的一个例子如下所示:

var myClass2 = new MyClass { ArrayOfStrings = null };
var singleElement2 = myClass2?.ArrayOfStrings[0];

在此实例中,myClass2 不是 null,但 ArrayOfStrings 属性是 null,因此当我尝试访问它时,它会抛出异常。因为 ArrayOfStrings 和索引之间没有点符号,所以我无法添加安全导航运算符。

因为这是一个数组,所以我可以按以下方式使用安全导航运算符,但这不适用于其他集合,例如列表和数据行

var myClass3 = new MyClass { ArrayOfStrings = null };
var singleElement3 = myClass3?.ArrayOfStrings?.GetValue(0);

最佳答案

基于Language Feature Status Page看起来你想要:

var singleElement2 = myClass2?.ArrayOfStrings?[0];

页面上的例子是:

customer?.Orders?[5]?.$price

...诚然,我相信 $price 部分现在已被撤回,但我希望索引 null 传播能够正常工作。

关于c# - 索引对象的安全导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com