gpt4 book ai didi

c# - 属性 get 上的空合并运算符

转载 作者:行者123 更新时间:2023-11-30 19:55:29 24 4
gpt4 key购买 nike

所以,我是reading an article at the moment我遇到了一些代码,这让我对它产生了疑问。

代码如下所示:

private UserService _userService = null;

protected UserService UserService
{
get { return _userService ?? Request.GetOwinContext().GetUserManager<UserService>(); }
}

对我来说,私有(private)属性看起来总是 null,所以使用 null 合并运算符是没有用的。我想它和这样做一样有用:

protected UserService UserService
{
get { return Request.GetOwinContext().GetUserManager<UserService>(); }
}

我错过了什么吗?当我们讨论这个主题时,为什么要这样做:

private UserService _userService = null;

肯定是一样的

private UserService _userService;

请帮我澄清我的怀疑:D

最佳答案

你是对的,私有(private)属性(property)在你的例子中永远是空的。

解决它的一种方法是使用以下代码:

private UserService _userService = null;

protected UserService UserService
{
get
{
return _userService ?? (_userService = Request.GetOwinContext().GetUserManager<UserService>());
}
}

这样私有(private)属性在不为空时使用,或者被初始化为分配的值。当执行空合并运算符??之后的语句时,分配给_userService的值实际上是由propery返回的。

关于c# - 属性 get 上的空合并运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37459861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com