gpt4 book ai didi

c# - 有什么方法可以对 C# 中的属性执行某种空合并?

转载 作者:行者123 更新时间:2023-11-30 13:57:21 25 4
gpt4 key购买 nike

我不太确定如何表述这个问题,但场景如下:

假设我有以下类(class):

public class SampleClass
{
public int Number { get; set; }
}

我知道你可以空合并包含类:

SampleClass newSampleClass = possibleNullSampleClass ?? notNullSampleClass;

有什么方法可以对属性执行某种空合并,这样我就不必这样做了:

int? num = sampleClass != null ? new int?(sampleClass.Number) : 5;

看起来像 ??? 运算符这样的东西来执行这个检查会非常有用,所以我可以这样做:

int? num = sampleClass.Number ??? 5;

在 C# 中有类似的东西吗?

最佳答案

目前没有这样的运营商。但在 C# 6 中,“安全导航”运算符将出现,您将能够编写

int number = sampleClass?.Number;

即使 sampleClass 等于 null,此代码也不会因 NullRef 而失败。现在您可以使用以下扩展方法从对象中提取值并封装 null 检查:

public static TResult Maybe<TSource, TResult>(
this TSource source, Func<TSource, TResult> produceResult, Func<TResult> produceDefault)
where TSource : class
{
return source == null ? produceDefault() : produceResult(source);
}

并按如下方式使用它:

int numberOrFive = sampleClass.Maybe(c => c.Number, () => 5);

关于c# - 有什么方法可以对 C# 中的属性执行某种空合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534541/

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