所以,我正在阅读一篇文章,我遇到了一些让我质疑它的代码.
代码如下所示:
private UserService _userService = null;
protected UserService UserService
{
get { return _userService ?? Request.GetOwinContext().GetUserManager<UserService>(); }
}
Run Code Online (Sandbox Code Playgroud)
对我来说,私有属性看起来总是为null,因此使用null-coalescing运算符是没用的.我想它和这样做很有用:
protected UserService UserService
{
get { return Request.GetOwinContext().GetUserManager<UserService>(); }
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?虽然我们在讨论这个问题,但为什么这样做:
private UserService _userService = null;
Run Code Online (Sandbox Code Playgroud)
肯定是这样的
private UserService _userService;
Run Code Online (Sandbox Code Playgroud)
请帮我澄清一下我的怀疑:D
你是对的,私有财产在你的例子中总是为空.
解决它的一种方法是使用以下代码:
private UserService _userService = null;
protected UserService UserService
{
get
{
return _userService ?? (_userService = Request.GetOwinContext().GetUserManager<UserService>());
}
}
Run Code Online (Sandbox Code Playgroud)
这样,私有属性在非null时使用,或者初始化为指定的值.??执行null-coalescing运算符后的语句时_userService,属性实际返回指定的值.