C# ??财产中的经营者,它是如何运作的?

sha*_*dow 2 c# operator-keyword

我无法理解它是如何工作的.

private Person _user;

private Person User
{
  get
  {
    return _user ?? ( _user = GetUser() );
  }
}
Run Code Online (Sandbox Code Playgroud)

我第一次引用User属性时,_user为null所以它返回(_user = GetUser())????

我错过了什么?

Hab*_*bib 7

首先,它是null-coalescing运算符,如果不是null,则返回左手操作数,否则返回右手操作数.

return _user ?? ( _user = GetUser() );
Run Code Online (Sandbox Code Playgroud)

如果_usernull,它返回GetUser方法返回的内容并将私有字段设置为它.

它的工作方式如下:

  1. GetUser 返回分配给的值 _user
  2. 赋值表达式(_user = GetUser())返回值.

请参阅:赋值表达式如何返回值.

  • 所以今天我们学习了一些关于赋值表达式 谢谢Habib! (3认同)