Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 161629
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T11:14:49+00:00 2026-05-11T11:14:49+00:00

I frequently have code that looks something like this: if (itm != null) {

  • 0

I frequently have code that looks something like this:

if (itm != null) {     foreach (type x in itm.subItems())     {         //dostuff     } } //do more stuff 

In situations where //do more stuff is omitted, it is very easy to avoid the extra foreach loop. By exitting scope using the appropriate command (depending on what is going on, this generally would mean a return statement or a continue statement).

This type of thing tends to result in arrow code. I currently have a few ways to deal with this:

  • Use code like itm = itm == null ? itm.subItems() : emptyArray
  • Allow arrow code
  • Use goto
  • Use evil scoping hacks (wrapping the whole thing, if statement in all, in a scope and then breaking out of it). In my opinion evil scoping hacks are basically equivalent to goto except uglier and harder to read, so I don’t consider this a valid solution.
  • Refactor some of the chunks into new methods. There are in fact a few cases where this probably is a good solution, but mostly it’s not appropriate since the null references are mainly error conditions from MS-functions.

Anyone care to offer a response on what approaches are considered preferable?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T11:14:50+00:00Added an answer on May 11, 2026 at 11:14 am

    If you’re using C# 3, you could always write an extension method:

    public static IEnumerable<SubItem> SafeSubItems(this ItemType item) {      return item == null ? Enumerable.Empty<SubItem> : source.SubItems(); } 

    Then just write:

    foreach (SubItem x in itm.SafeSubItems()) {     // do stuff } // do more stuff 

    The key thing is that extension methods can be called even ‘on’ null references.

    What would be nice would be a ‘null-safe dereferencing’ operator, so we could write:

    // Not valid C# code! foreach (SubItem x in itm?.SubItems() ?? Enumerable.Empty<SubItem>()) { } 

    Or just define an EmptyIfNull extension method on IEnumerable<T> and use

    // Not valid C# code! foreach (SubItem x in (itm?.SubItems()).EmptyIfNull()) { } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 203k
  • Answers 203k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer You've probably got a bad path somewhere and the request… May 12, 2026 at 8:34 pm
  • Editorial Team
    Editorial Team added an answer The ## concatenates two tokens together. It can only be… May 12, 2026 at 8:34 pm
  • Editorial Team
    Editorial Team added an answer The operator sometimes known as the ternary operator is actually… May 12, 2026 at 8:34 pm

Related Questions

I have a file structure that looks something like this: project1_root/ tests/ ... src/
Not unlike a clap detector (Clap on! clap clap Clap off! clap clap Clap
I'm very infrequently seeing the following error logged on a website I manage: Arguments
My company has a client that tracks prices for products from different companies at

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.