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。
我遇到了这个错误: 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。