New class object error : Object reference not set to an instance of an object

New class object error : Object reference not set to an instance of an object

我遇到了这个错误: NullReferenceException:对象引用未设置为对象的实例

在创建countStats对象时,它是NULL,之后我尝试给这个class的字段赋值并得到这个错误。 我做错了什么?

public async Task<MainPageViewModel> GetMainPageViewModelAsync()
        {
            var model = new MainPageViewModel();
            var countStats = new StatsCountsViewModel(); // NULL

            if (!_cache.TryGetValue("CountsStats", out countStats))
            {
                var result = await _contextRepository.GetStatsMainPageAsync();

                countStats.CountSms = "300"; //ERROR
                countStats.CountUsers = "600";
                countStats.CountSuccessForecast = "1228";

                model.Stats = countStats;

                _cache.Set("CountsStats", countStats, new MemoryCacheEntryOptions
                {
                    AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
                });
            }

            var forecasts = await _contextRepository.GetForecastsOnSaleAsync();

            foreach (var item in forecasts)
            {
                model.Forecasts.Add(item);
                model.Bookmaker.Add(await _contextRepository.GetBookmakersForForecastsAsync(item.Id));
            }

            return model;

        }
 public class StatsCountsViewModel
    {
        public string CountUsers { get; set; }
        public string CountSms { get; set; }
        public string CountSuccessForecast { get; set; }

    }

这是你的问题:

_cache.TryGetValue("CountsStats", out countStats)

out 将更改 countStats 指向的对象。如果它在缓存中找到,那么它将是缓存的对象。伟大的!如果不是,那么它将是 null。在这种情况下,您需要创建一个新实例。

您应该将代码更改为:

var countStats = null;

if (!_cache.TryGetValue("CountsStats", out countStats))
{
    countStats = new StatsCountsViewModel();

问题出在这里:

if (!_cache.TryGetValue("CountsStats", out countStats))

您正在使用 out 字词传递 countStats,并且在 try get 值的某处,您在其中设置了一个 null。