Inline IF Statement in C#

How will I write an Inline IF Statement in my C# Service class when setting my enum value according to what the database returned?

For example: When the database value returned is 1 then set the enum value to VariablePeriods, when 2 then FixedPeriods.

Hope you can help.

5 Answers

The literal answer is:

return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods); 

Note that the inline if statement, just like an if statement, only checks for true or false. If (value == 1) evaluates to false, it might not necessarily mean that value == 2. Therefore it would be safer like this:

return (value == 1 ? Periods.VariablePeriods : (value == 2 ? Periods.FixedPeriods : Periods.Unknown)); 

If you add more values an inline if will become unreadable and a switch would be preferred:

switch (value) { case 1: return Periods.VariablePeriods; case 2: return Periods.FixedPeriods; } 

The good thing about enums is that they have a value, so you can use the values for the mapping, as user854301 suggested. This way you can prevent unnecessary branches thus making the code more readable and extensible.

1

You may define your enum like so and use cast where needed

public enum MyEnum { VariablePeriods = 1, FixedPeriods = 2 } 

Usage

public class Entity { public MyEnum Property { get; set; } } var returnedFromDB = 1; var entity = new Entity(); entity.Property = (MyEnum)returnedFromDB; 
6

You can do inline ifs with

return y == 20 ? 1 : 2; 

which will give you 1 if true and 2 if false.

0

This is what you need : ternary operator, please take a look at this

1

Enum to int: (int)Enum.FixedPeriods

Int to Enum: (Enum)myInt

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like