[c#] хочу оператор - автоматический NullObject

by Темных Сергей 26.03.2009 17:42:00

Несмотря на то, что уже на подходе 4-ая версия языка C#, до сих пор не хватает следующей возможности (на данный момент, такое невозможно сделать даже самому)

 

Не хватает "красивой" работы с нулевыми значениями

сейчас вместо:

if (Root.Config.User.Age > 16) { //bla-bla }



часто приходиться писать:

int? age = null; var root = Root; if (root != null) { var config = root.Config; if (config != null) { var user = config.User; if (user != null) age = user.Age; } } if (age != null && age.Value > 10) { //bla-bla }




т.е. хочеться иметь оператор вида '.?', который возвращает нуль, если левая часть имеет нулевое значение

if (Root.?Config.?User.?Age > 16) { //bla-bla }



или может даже лучше:

if (Root?.Config?.User?.Age > 16) { //bla-bla }




Особенно это нужно при описании правил бизнес логики, т.к. в бизнес-логики часто мы имеем на руках только частичную информацию о мире
 

зы

более формальное определение:

 конструкция вида <object>?.<member> ведет себя следующим образом:

1. если <object> != null, то равносильна конструкции <object>.<member>

2. если <object> == null, то <member> не вызывается, а значение выражения становится null

3. общий результирующий тип выражения такое же как у <object>.<member>, за исключением value-типов, для которых тип выражения будет Nullable<тип>

 

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Похожие записи

Powered by BlogEngine.NET 1.3.1.0
Theme by Mads Kristensen

Сергей Темных

Модулятор


Calendar

<<  Октябрь 2017  >>
повтсрчепясуво
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

View posts in large calendar

Страницы

    Последние комментарии

    Категории

    None


    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2017

    Sign in