gpt4 book ai didi

c# - 可以用吗??类(class)成员的运营商?

转载 作者:太空狗 更新时间:2023-10-30 00:27:59 24 4
gpt4 key购买 nike

在 C# 中有一个很棒的运算符 '??'这让生活变得更加简单。而不是写 (foo != null)? foo : default 我可以写 foo ??默认。有没有一种简单的方法可以将此运算符应用于类成员,例如在 (foo != null) 的情况下? foo.bar : 默认值?

更新:好的,我会解释一下:

string a = (someVeryLongVariableName != null)? someVeryLongVariableName : ""; // Long way
string a = someVeryLongVariableName ?? ""; // Shorter with same result
string a = (someVeryLongVariableName != null)? someVeryLongVariableName.bar : ""; // What's the shorter way in this case?

upd2:当我需要这个功能时的情况是这样的:

if (foo is MyClass) bar1 = (foo as MyClass).SpecificMember;
if (foo is OneMoreClass) bar2 = (foo as OneMoreClass).AnotherSpecificMember;
if (foo is MyFavoriteClass) bar3 = (foo as MyFavoriteClass).YetAnotherMember;

如果我能把它们缩短成类似的东西就太好了

bar1 = (foo as MyClass).SpecificMember ?? null;

也许它并没有短很多,但它只将 foo 转换为 MyClass 一次并使用默认值显式初始化 bar 。最重要的是它看起来更漂亮。

最佳答案

没有内置的 C# 运算符可以执行您描述的操作。一个新的运算符(大多数人建议使用 .??.)已成为 requested , 但它有 not been added到 C#。

作为变通方法,许多开发人员实现了一个IfNotNull 扩展方法,例如,在这个 StackOverflow question 中和 answer .

关于c# - 可以用吗??类(class)成员的运营商?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357035/

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