Home > Enterprise >  How can I return a nullable short with nullable Boolean parameter
How can I return a nullable short with nullable Boolean parameter

Time:10-01

public static short? ToShortNullable(this bool? b)
{       
     return b.HasValue ? null : (b.Value==true : 1 ? 0);
}

I have tried the above but the syntax is not happy, I want to return null if b is null, 1 if b is true and 0 if b is false.

CodePudding user response:

You have two problems: one is that you have the syntax back to front with the : and ? in b.Value==true : 1 ? 0 and the other is that you have the logic back to front. You're trying to return null when b does have a value and trying to extract a value from b when it doesn't have one.

Try this:

public static short? ToShortNullable(this bool? b)
{       
     return b.HasValue ? (b.Value==true ? 1 : 0) : null;
}

And since b.Value == true is the same as b.Value you can simplify to:

public static short? ToShortNullable(this bool? b)
{       
     return b.HasValue ? (b.Value ? 1 : 0) : null;
}

CodePudding user response:

If you want to make it modern and fancy:

public static short? ToShortNullable(this bool? b) => b switch
{
    true => 1,
    false => 0,
    _ => null
};

See it in action in this fiddle

CodePudding user response:

return !b.HasValue ? null : (short)(b.Value ? 1 : 0);

CodePudding user response:

try this

public static short? ToShortNullable(this bool? b)
{
  return   b == null ? null : b == true ? 1 : (short?) 0 ;
}
  •  Tags:  
  • c#
  • Related