bool有什么区别?MyProperty和bool?MyProperty

Hit*_*mer 6 c#

今天在审查公关时我在课堂上看到了这个:

public bool ?Selected { get; set; }   //question mark in front of property name
Run Code Online (Sandbox Code Playgroud)

我怀疑开发商的意思是这个

public bool? Selected { get; set; }  //question mark at end of type
Run Code Online (Sandbox Code Playgroud)

我很惊讶这甚至遵守了所以我自己尝试了,发现这是合法的代码,它最终做同样的事情.

我的问题是:这两者之间是否存在任何微妙(或不那么微妙)的区别?

Fra*_* B. 3

首先,我的 Visual Studio 2017 立即纠正了这个问题

public bool ?Selected { get; set; } 
Run Code Online (Sandbox Code Playgroud)

对此

public bool? Selected { get; set; } 
Run Code Online (Sandbox Code Playgroud)

那么,IL DASM来救援!可以看到生成的IL是一样的,就像@mjwills在评论中所说:

在此输入图像描述

在此输入图像描述

最后,您始终可以按+让 Visual Studio 重新格式化您的代码并正确管理空白和缩进。Ctrl+KCtrl+D

根据您关于更改为bool?的问题bool,这取决于:如果某些东西可以具有不确定的值或状态,就像复选框一样,您应该使用bool?; 否则bool就好了。