Compiler Error for Nullable Bool

前端 未结 5 1177
一向
一向 2021-01-19 07:45
 bool? ispurchased = null;
    var pospurcahsed= ispurchased ? \"1\":\"2\";

Its generating exception .

Cannot implicitly con

5条回答
  •  时光说笑
    2021-01-19 08:28

    This is not allows because it is unclear what null means in the context of a conditional.

    Nullable Booleans can be cast to a bool explicitly in order to be used in a conditional, but if the object has a value if null, InvalidOperationException will be thrown.

    It is therefore important to check the HasValue property before casting to bool.

    Use like

       var pospurcahsed=  (ispurchased.HasValue && ispurchased.Value) ?......
    

    Nullable Booleans are similar to the Boolean variable type used in SQL. To ensure that the results produced by the & and | operators are consistent with SQL's three-valued Boolean type, the following predefined operators are provided:

    bool? operator &(bool? x, bool? y)
    
    bool? operator |(bool? x, bool? y)
    

    enter image description here

    or you can use martin suggestion GetValueOrDefault[Thanks to martin to pointing it out ]

    The GetValueOrDefault method returns a value even if the HasValue property is false (unlike the Value property, which throws an exception).

提交回复
热议问题