Skip to main content

Favorite C#.Net Interview Question: Numeric Conversions

I like to ask a wide variety of technical questions targeted to the candidate's seniority during interviews. My favorite C# question focuses on converting an Int64 into an Int32. Hopefully, this isn't something you need to perform often (poor design) but occasionally we have to clean up after the other guy, right? ;-) (If you interview with me and are reading this post-consider it a gimme...and hopefully you learned something anyway.)

Situation: We have an Int64 "b" I need to convert into an Int32 "a". How should we set a = b in the safest manner (i.e. no data loss)? Here are some options:



  • Line 15 does not compile throwing a "Cannot implicitly convert type 'long' to 'int'. " exception.
  • Line 17 properly raises an OverflowException.
  • Line 19 does _not_ throw an exception. a's value incorrectly becomes 1569325055.
  • Line 21 properly raises an OverflowException.
In my opinion, the style in Line 17 is the best because it leverages the Framework to do most of the work. This way, if the Framework implementation ever changes, my code will automatically benefit. Also, most developers aren't familiar with the checked construct (2nd best option, IMO) so it looks a bit out of place.

Many developers unknowingly choose Line 19. Bugs introduced with this code can be some of the nastiest to track down. Be safe out there! Convert explicitly using the Framework.

Good web links for conversion:
Jeff Adkin's Data Conversion posting
Explicit Numeric Conversions Table (C# Reference)

Comments

Popular posts from this blog

Hero Write-up: Now this is Customer Service!

My best friend Scott is president/C-everything of a small northeastern Ohio manufacturing concern, KirkKey Interlock . I hadn't spoken with him for a while and wanted to see how Canton fared with the Blizzard of '08 (that's what they're calling it...not me). I say, "So what's new?" He replies that on Tuesday his primary server (which essentially runs the business) came up with lame with not one, but [a statistically improbable] *two* physical disk failures on a RAID5 hardware array. My friend attempts the fix but gives up pretty quickly after seeing some Linux nasty-grams on the boot screen. His service provider is an old college buddy who lives down in Raleigh, Cerient Technologies led by Jason Tower . Scott couldn't email out because Exchange was on the toasted server. Being creative, Scott started Treo-emailing photos of the screen. Unfortunately, Jason couldn't receive email because a storm had knocked out a lot of local hosting. [Sigh] After...

Certified or Certifiable?

As a senior technology professional, I interview a lot of candidates. I also maintain solid relationships with other folks in the community. Frequently, the topic of certifications arises: A good investment? Valuable? A clear measurement of skill? Consensus appears to draw the line related to one's seniority. If you're (for example) just out of school and looking for an instant creditability boost, by all means pursue a certification. Likely, this credential will assist you in overcoming the "junior" tag and likely land you more interviews and client roles. (Note: I'm going to use the terms senior and junior here...no offense to either. Can't think of a better one word description. I was a junior once too.) In stark contrast, the value of certifications drops off the table around the 2-3 year mark. Some in my circles even perceive certifications as a negative for the senior professional. They think, "If this guy is so solid, why is he wasting valuable...

Lab Management in Visual Studio 2010 Released

In my experience, there's a lot of animosity and poor communication between Development and QA . It's not that they don't appreciate one another so much as they never seem to stay on the same page. QA : "What's the status on defect #4874?" Dev: "Done." QA : "Done?" Dev: "Yeah, I fixed that Tuesday." QA : "Err, ok . Well where is it? I mean where can I verify it?" Dev: "No clue. I committed it Tuesday. It passed unit tests and built successfully." QA : "Alright. I'll track it down." Invariably , QA speaks with the build manager (if there is one) to find the build in which that defect was repaired. After discovering the correct build, now QA needs an environment stood up to house that build. But wait, the UAT environment is currently testing the next release. It can't be disturbed for another week. At this point, the QA person's blood pressure heads for unsafe levels and the Dice.com bro...