提问人:pitten 提问时间:1/30/2020 最后编辑:Alexei Levenkovpitten 更新时间:1/30/2020 访问量:1753
新类对象错误:对象引用未设置为对象的实例 [重复]
New class object error : Object reference not set to an instance of an object [duplicate]
问:
我遇到了这个错误: NullReferenceException:对象引用未设置为对象的实例
创建 countStats 对象时,它是 NULL,之后我尝试为此类的字段赋值并得到此错误。 我做错了什么?
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; }
}
答:
4赞
ProgrammingLlama
1/30/2020
#1
这是你的问题:
_cache.TryGetValue("CountsStats", out countStats)
out
将更改指向的对象。如果在缓存中找到它,则它将成为缓存对象。伟大!如果不是,那么它将是.在这种情况下,您需要创建一个新实例。countStats
null
您应该将代码更改为:
var countStats = null;
if (!_cache.TryGetValue("CountsStats", out countStats))
{
countStats = new StatsCountsViewModel();
1赞
Athanasios Kataras
1/30/2020
#2
问题就在这里:
if (!_cache.TryGetValue("CountsStats", out countStats))
您正在传递使用该单词,并且在 try get 值的某个地方,您在那里设置了一个 null。countStats
out
评论
null