You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC中无法创建简单类实例并序列化JSON的问题

问题根因分析

你遇到的new hashContainer后调试显示对象为null的情况,本质是调试假象,.NET 中使用new关键字实例化正常的引用类型,除非触发内存溢出异常,否则绝对不会返回null,常见诱因如下:

  • 你使用了Release配置运行程序:Release模式下编译器会自动优化未被后续代码引用的局部变量,变量被优化掉后调试器无法读取实际值,就会显示为null。你可以切换到Debug配置,重新生成解决方案后再调试即可看到变量的实际值。
  • 调试符号与运行代码不匹配:你修改代码后没有重新编译,当前运行的程序版本和你编辑器里看到的代码不一致,断点绑定的行错位导致调试器读取到错误的变量值。你可以执行清理解决方案操作后重新生成,再启动调试。
  • 存在同名类型冲突:你当前代码所在的命名空间下,存在另一个同名的hashContainer类,其构造逻辑存在异常且异常被上层吞掉,同时你开启了「仅我的代码」调试选项,异常没有触发中断。你可以右键点击代码中的hashContainer选择「转到定义」,确认跳转的类是你自定义的版本即可排除该问题。

对应验证代码

你可以在实例化对象后加一行临时的输出代码,强制变量被引用,避免被优化:

public class hashContainer
{
    public string h;
    public hashContainer(string s)
    {
        this.h = s;
    }
}

public IActionResult Updateuser()
{
    ApplicationUser u = new ApplicationUser();
    var hass = new hashContainer("pikkemand");
    // 加临时输出,强制变量被引用,避免调试优化
    Console.WriteLine(hass.h);
    string json = JsonConvert.SerializeObject(hass);
}

加完后如果控制台能正常输出pikkemand,就说明对象实例化完全正常,只是之前的调试优化导致显示异常。

内容的提问来源于stack exchange,提问作者NotQuiteSo1337

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:36:08