代码之家  ›  专栏  ›  技术社区  ›  Ali Garivani

我有标识为null的警告,但我使用?没有解决这个问题

  •  -1
  • Ali Garivani  · 技术社区  · 2 年前

    通过使用此代码,我可以获得Claims,以便使用它,但它警告我它是空的

    警告有:

    Claim? ClaimsIdentity.FindFirst(string type) (+ 1 overload)
    

    检索具有指定声明类型的第一个声明。

    退货:

    第一个匹配的声明,如果找不到匹配,则为null。

    例外情况:

    ArgumentNullException
    CS8602:取消引用可能为空的引用

    if (HttpContext.User.Identity is ClaimsIdentity identity)
    {
        var IdUser = identity?.FindFirst(ClaimTypes.SerialNumber).Value;
    }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Peter B    2 年前

    FindFirst 可以返回 无效的 ,所以您还必须使用 ? 之后:

    v = identity?.FindFirst(ClaimTypes.SerialNumber)?.Value;