Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将lambda中的可空布尔值转换为正则布尔值_C#_Lambda - Fatal编程技术网

C# 将lambda中的可空布尔值转换为正则布尔值

C# 将lambda中的可空布尔值转换为正则布尔值,c#,lambda,C#,Lambda,我在视图中为bool?字段设置了一个CheckBoxFor,但是它用红色下划线表示: 无法隐式转换布尔?对布尔来说,你缺演员了吗 问题是,这在lambda中: bool? nullable {get; set;} CheckBoxFor(m => m.nullable) 如果不是lambda,我知道我能做到: (bool)nullable 但我不确定如何在lambda中执行此操作以消除此错误。我试着去做 CheckBoxFor(m => m.nullable.value) 但

我在视图中为
bool?
字段设置了一个
CheckBoxFor
,但是它用红色下划线表示:

无法隐式转换布尔?对布尔来说,你缺演员了吗

问题是,这在lambda中:

bool? nullable {get; set;}
CheckBoxFor(m => m.nullable)
如果不是lambda,我知道我能做到:

(bool)nullable
但我不确定如何在lambda中执行此操作以消除此错误。我试着去做

CheckBoxFor(m => m.nullable.value) 

但是这似乎没有在控制器中保留它的值,我得到了一个空值。

CheckBoxFor(m=>m.nullable??false)
应该可以实现您的目标。

如果值为
null
,您实际期望会发生什么?当您编写
CheckBoxFor(m=>(bool)m.nullable)
时会发生什么?lambda只是匿名方法。@neontapir我想我试过了,但它不喜欢,让我再试一次。
CheckBoxFor(m=>m.nullable??false)
我想
CheckBoxFor
需要一个
MemberExpression
,这个空的联合显然不是你测试的吗?我认为提供给CheckBoxFor的表达式有特定的要求。MVC将如何将此映射回
nullable
属性?它是否对表达式树进行了深入验证?这会导致post上返回的对象中的表达式始终为false吗?我想
CheckBoxFor(m=>m.HasValue?m.Value:false)
可能更可取。@heltonbiker
m.GetValueOrDefault()
为我们这样做。@Bas,不,我没有测试这个。当我做很多MVC编程时,我习惯用这种方式使用null操作符。你是对的,在某些用例中,它可能不是最好的方法。
GetValueOrDefault
是我提到的答案可能重复使用的方法。对于布尔型,这两种方法应该是等效的。