Click here to Skip to main content
Click here to Skip to main content

Tagged as

Using C# Ternary (?) Operator Statement as a Method Parameter

, 25 Aug 2014 Public Domain
Rate this:
Please Sign up or sign in to vote.
Using C# Ternary (?) operator statement as a method parameter

Introduction

The '?' operator is one of the oldest conditional operators that has been coming along with object oriented languages such as C++, Java and C#. The most significant advantage of using it is, it will reduce a couple of lines of code than using the traditional if-else or switch statements, where there is a need to return values.

I first came across the functionality and power of using this, just a couple of years ago, while assigned with a task to re-factor some existing code of a senior. More often, I have seen the use of this being used with assigning the results to variables. And subsequently, my coding behaviour also followed suit.

Recently, I was wondering if the usage could only be limited to assigning variables, and tried adding the statement directly to a method passing it as a variable. It just works fine, since as long as the returning type matches the variable type of the method parameter, such an assignment succeeds. Though this is maybe already a straight forward understanding for C# or Java experts, yet this explanation could serve for those in doubt, and to understand the beauty of the language. Ok, without any further exaggeration, let's have a look at what I am talking about.

Let’s assume you have a method to display a name by passing in a name parameter like the following:

Code

void DisplayName(string name)
{
//
}

Now simply let's assume two names, 'Ahmed' and 'Jack', and we are to display the name which has less than 5 characters and pass that name to the above method to be further processed. Using the ternary operator, the approach would be:

Code

string name1 = "Ahmed";
string name2 = "Jack";
var nameLessThanFive = name1.Length < 5 ? name1: name2;
DisplayName(nameLessThanFive);

Eliminating the intermediate variable assignment, this could be achieved also as the following:

Code

DisplayName(name1.Length < 5 ? name1: name2);

Note: This approach would work only for methods that pass arguments by value and not for those that pass arguments by reference (i.e., the arguments with ref and out keywords will not work).

Personally, I would not recommend the over usage of this approach on method parameters as it could negate the very purpose of simplicity of reading (i.e., you might end up with a longer line in the method parameters mixed up with '?'s, ':'s and ","s thereby making it complex to read).

I find the following scenarios where you can advocate this approach:

  1. Methods that have parameters which have a need to pass arguments which require results from a condition.
  2. Using this approach on no more than two or three arguments of a method to reduce reading complexity.
  3. Using this approach on methods that could be called on parts of other lengthy conditional statements such as switch or if-else. This way, we could save a lot of unnecessary variable assignments prior to method calls.

That's it. I would like to hear opinions of others on this. Happy coding ahead...!

Source originally from my blog: http://maturedknowledge.blogspot.com/2014/08/using-c-ternary-operator-statement-as.html.

License

This article, along with any associated source code and files, is licensed under A Public Domain dedication

Share

About the Author

mafaz321
Software Developer (Senior) ASSETTE
Sri Lanka Sri Lanka
Getting fascinated with discovering new stuff.
Follow on   LinkedIn

Comments and Discussions

 
Question[My vote of 2] Observations Pinmemberozbear27-Aug-14 13:53 
AnswerRe: [My vote of 2] Observations Pinprofessionalmafaz32127-Aug-14 19:30 
QuestionMy vote of 2 PinmemberMember 188040327-Aug-14 2:32 
AnswerRe: My vote of 2 Pinprofessionalmafaz32127-Aug-14 2:41 
GeneralMy vote of 2 PinmemberMember 188040327-Aug-14 2:24 
GeneralMy vote of 2 PinmemberPeejayAdams26-Aug-14 3:28 
GeneralRe: My vote of 2 Pinprofessionalmafaz32126-Aug-14 7:03 
Question[My vote of 2] Improve terminology usage. Pinmemberfrankazoid26-Aug-14 1:39 
AnswerRe: [My vote of 2] Improve terminology usage. Pinprofessionalmafaz32126-Aug-14 7:06 
Suggestion[My vote of 2] You are not passing the Ternary (?) Operator as your title suggests PinmemberDelphiCoder25-Aug-14 22:57 
GeneralRe: [My vote of 2] You are not passing the Ternary (?) Operator as your title suggests Pinprofessionalmafaz32126-Aug-14 0:09 
GeneralRe: [My vote of 2] You are not passing the Ternary (?) Operator as your title suggests PinmemberDelphiCoder26-Aug-14 16:28 
GeneralRe: [My vote of 2] You are not passing the Ternary (?) Operator as your title suggests Pinprofessionalmafaz32126-Aug-14 19:04 
GeneralRe: [My vote of 2] You are not passing the Ternary (?) Operator as your title suggests PinmemberDelphiCoder1-Sep-14 23:56 
GeneralMy vote of 5 PinmemberHumayun Kabir Mamun25-Aug-14 20:20 
GeneralMy vote of 1 PinprofessionalSamer Abu Rabie25-Aug-14 18:47 
GeneralRe: My vote of 1 Pinprofessionalmafaz32125-Aug-14 19:18 
GeneralRe: My vote of 1 PinprofessionalSamer Abu Rabie25-Aug-14 19:52 
GeneralThoughts PinmemberPIEBALDconsult25-Aug-14 17:46 
GeneralRe: Thoughts Pinprofessionalmafaz32125-Aug-14 19:26 
GeneralRe: Thoughts PinmemberPIEBALDconsult26-Aug-14 6:01 
GeneralRe: Thoughts Pinprofessionalmafaz32126-Aug-14 7:11 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.1411022.1 | Last Updated 25 Aug 2014
Article Copyright 2014 by mafaz321
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid