有没有办法在C#5中模仿C#6空条件运算符

艾门道迪

我有一种情况,我需要在对象初始化器中分配一些对象的属性。这些对象中的一些可以为null,我需要访问它们的属性,问题是它们太多了,并且使用if / else不好。

例子

visits = visitJoins.AsEnumerable().Select(joined => new VisitPDV()
{
    VisiteId = joined.Visite.VisiteId.ToString(),
    NomPointDeVente = joined.VisitePdvProduit.PointDeVente.NomPointDeVente,             
});

joined.VisitePdvProduit可以为空,而问题是,有像几十个这样的任务的(我只是把一个缩短的代码)

C# 6 Null-Conditional operator是针对这种情况的完美解决方案,问题是我C# 5在该项目中工作,有没有办法模仿它?

i3arnon

好吧,您可以使用扩展方法来接收访问者委托,并且仅在项目不是时才执行null

public static TResult ConditionalAccess<TItem, TResult>(this TItem item, Func<TItem, TResult> accessor) where TResult : Class
{
    if (item == null)
    {
        return null;
    }
    else
    {
        return accessor(item);
    }
}

您可以像这样使用它:

NomPointDeVente = joined.VisitePdvProduit.ConditionalAccess(_ => _.PointDeVente.NomPointDeVente);

您可以为不返回值(即bar.ConditionalAccess(_ => _.Foo()))或返回值类型的操作轻松创建此方法的版本

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#6中的空条件运算符和字符串插值

来自分类Dev

Python等效于C#6中引入的空条件运算符

来自分类Dev

C#6空条件运算符-作为代码切换器?

来自分类Dev

C#6空条件运算符是否检查.Any()?

来自分类Dev

C#6空条件运算符不适用于LINQ查询

来自分类Dev

有没有办法让算术运算符在Javascript ES6中使用getter和setter?

来自分类Dev

有没有办法在vimscript中默默地使用短路运算符?

来自分类Dev

为什么没有捕获的lambda从C#5中的静态更改为C#6中的实例方法?

来自分类Dev

有什么建议吗?运算符/ C ++的空条件运算符?

来自分类Dev

有没有办法在doctrine2中使用mysql二进制运算符?

来自分类Dev

有没有办法在指向类类型的指针中不使用*来调用类运算符?

来自分类Dev

有没有办法用算术运算符将数组附加到列表中?

来自分类Dev

有没有办法在Phalcon中使用新的PostgreSQL 9.3 JSON运算符?

来自分类Dev

有没有办法为枚举类型实现一元运算符?

来自分类Dev

有没有办法在python中使用点运算符传递参数?

来自分类Dev

有没有办法在PHP中使用运算符重载?

来自分类Dev

有没有办法在find -exec中使用>运算符

来自分类Dev

有没有办法为枚举类型实现一元运算符?

来自分类Dev

有没有办法动态更改关系运算符(<,>,==等)?

来自分类Dev

有没有办法为容器类型创建运算符/函数重载

来自分类Dev

有没有办法在Eigen(C ++)中存储阈值运算输出?

来自分类Dev

试图了解?C#中的(空条件)运算符

来自分类Dev

方法参数中的 C# 空条件运算符

来自分类Dev

有没有办法转发所有赋值运算符(+ =,* =等)以隐式使用重写的直接赋值运算符(=)?

来自分类Dev

有没有办法转发所有赋值运算符(+ =,* =等)以隐式使用重写的直接赋值运算符(=)?

来自分类Dev

有没有办法使三元运算符适用于Cloud Firestore安全规则?

来自分类Dev

有没有办法知道一个方法是否是一个运算符?

来自分类Dev

有没有办法在Matplotlib中向图例添加空条目?

来自分类Dev

C#错误与空条件运算符并等待

Related 相关文章

  1. 1

    C#6中的空条件运算符和字符串插值

  2. 2

    Python等效于C#6中引入的空条件运算符

  3. 3

    C#6空条件运算符-作为代码切换器?

  4. 4

    C#6空条件运算符是否检查.Any()?

  5. 5

    C#6空条件运算符不适用于LINQ查询

  6. 6

    有没有办法让算术运算符在Javascript ES6中使用getter和setter?

  7. 7

    有没有办法在vimscript中默默地使用短路运算符?

  8. 8

    为什么没有捕获的lambda从C#5中的静态更改为C#6中的实例方法?

  9. 9

    有什么建议吗?运算符/ C ++的空条件运算符?

  10. 10

    有没有办法在doctrine2中使用mysql二进制运算符?

  11. 11

    有没有办法在指向类类型的指针中不使用*来调用类运算符?

  12. 12

    有没有办法用算术运算符将数组附加到列表中?

  13. 13

    有没有办法在Phalcon中使用新的PostgreSQL 9.3 JSON运算符?

  14. 14

    有没有办法为枚举类型实现一元运算符?

  15. 15

    有没有办法在python中使用点运算符传递参数?

  16. 16

    有没有办法在PHP中使用运算符重载?

  17. 17

    有没有办法在find -exec中使用>运算符

  18. 18

    有没有办法为枚举类型实现一元运算符?

  19. 19

    有没有办法动态更改关系运算符(<,>,==等)?

  20. 20

    有没有办法为容器类型创建运算符/函数重载

  21. 21

    有没有办法在Eigen(C ++)中存储阈值运算输出?

  22. 22

    试图了解?C#中的(空条件)运算符

  23. 23

    方法参数中的 C# 空条件运算符

  24. 24

    有没有办法转发所有赋值运算符(+ =,* =等)以隐式使用重写的直接赋值运算符(=)?

  25. 25

    有没有办法转发所有赋值运算符(+ =,* =等)以隐式使用重写的直接赋值运算符(=)?

  26. 26

    有没有办法使三元运算符适用于Cloud Firestore安全规则?

  27. 27

    有没有办法知道一个方法是否是一个运算符?

  28. 28

    有没有办法在Matplotlib中向图例添加空条目?

  29. 29

    C#错误与空条件运算符并等待

热门标签

归档