如何解决错误 CS1525 Invalid expression term '='?

Posted

技术标签:

【中文标题】如何解决错误 CS1525 Invalid expression term \'=\'?【英文标题】:How to solve Error CS1525 Invalid expression term '='?如何解决错误 CS1525 Invalid expression term '='? 【发布时间】:2020-05-11 03:05:52 【问题描述】:

这是注册类中post方法的代码:

    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    
       returnUrl ??= Url.Content("~/Account/feeds");
        ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
        if (ModelState.IsValid)
        

            var user = new ApplicationUser  
                UserName = Input.username,
                Email = Input.Email,
                DateOfBirth = Input.DOB,
                Gender = Input.Gender
            ;
            //this one too

            //notice ma3aml dbcontext.add(user) batteekh w 3amal save..
            var result = await _userManager.CreateAsync(user, Input.Password);
            if (result.Succeeded)
            
                _logger.LogInformation("User created a new account with password.");

                /*var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                var callbackUrl = Url.Page(
                    "/Account/ConfirmEmail",
                    pageHandler: null,
                    values: new  area = "Identity", userId = user.Id, code = code ,
                    protocol: Request.Scheme);

                await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                    $"Please confirm your account by <a href='htmlEncoder.Default.Encode(callbackUrl)'>clicking here</a>.");*/

                if (_userManager.Options.SignIn.RequireConfirmedAccount)
                
                    return RedirectToPage("RegisterConfirmation", new  email = Input.Email );
                
                else
                
                    await _signInManager.SignInAsync(user, isPersistent: false);
                    return LocalRedirect(returnUrl);
                
            
            foreach (var error in result.Errors)
            
                ModelState.AddModelError(string.Empty, error.Description);
            
        

         //If we got this far, something failed, redisplay form
        return Page();
    

错误是“无效的表达式术语'='”,它指向行 return ??=Url.Content("~/Account/feeds"); 知道这个类是一个脚手架项目,我该如何解决这个错误??

谢谢。

【问题讨论】:

您的项目是否面向 C# 8?你在使用 Visual Studio 2019 吗? 请不要张贴您的代码图片,实际上是将代码粘贴到您的问题中。见how to ask a question @JonathonChase 是的,我正在使用 VS 2019 请将代码发布为文本,而不是图像。也最好是一个最小的、完整的、可验证的例子。不过我同意乔纳森的观点,看起来您尝试使用仅在更高版本的 C# 版本中引入的语法糖。 完成@Christopher 嗯.. 项目正常构建突然出现这个错误.. 你认为应该怎么做? 【参考方案1】:

Null Coalescing Assignment 运算符 (??=) 是 C# 8 中引入的一项功能。看来您的项目可能没有正确定位该语言版本,或者可能无法定位它。

您可以相当容易地获得与此运算符所做的基本等效的功能,尽管它有点冗长。

returnUrl = returnUrl ?? Url.Content("~/Account/feeds");

你也可以只检查值是否为空,然后分配给它。

if(returnUrl == null)
    returnUrl = Url.Content("~/Account/feeds");

【讨论】:

【参考方案2】:

??= 是Null Coalescing Operator。那是语法糖。它是在 C# 7.3 中添加的,并在 8.0 中进行了改进。

请注意,C# 版本完全是编译器。它与目标框架无关。但是,后端框架确实很重要,从某种意义上说,真正的命令行编译器 VS 正在远程处理可能还不支持新的 C# 方言:

https://www.c-sharpcorner.com/article/which-version-of-c-sharp-am-i-using-in-visual-studio-2019/

【讨论】:

我相信它是“Null Coalescing Assignment”运算符,它是 C# 8 的功能。 @JonathonChase 那么我认为你是对的。我不得不查查这一切。同样对于 VS 2019,您使用的 C# 版本似乎存在问题,具体取决于目标框架。所以语言版本是最可能的原因。

以上是关于如何解决错误 CS1525 Invalid expression term '='?的主要内容,如果未能解决你的问题,请参考以下文章

Idea报key is invalid错误,如何解决

从 Spotify API 请求 reshresh_token 时,如何解决“错误:invalid_grant Invalid authentication code”?

idea报key is invalid错误,最有效的解决方案

IdentityServer“invalid_client”错误总是返回

页面发送请求到后台报错“Empty or invalid anti forgery header token.”问题解决

如何解决解决方案中现有项目的c#CS0006错误