C# 我一直都有空引用,为什么?
我有两个几乎相同的代码: 这是给喜欢的人的:C# 我一直都有空引用,为什么?,c#,.net-core,telegram-bot,C#,.net Core,Telegram Bot,我有两个几乎相同的代码: 这是给喜欢的人的: private async Task HandleCallbackQuery(CallbackQuery callbackQuery, CancellationToken cancellationToken) { switch (callbackQuery.Data) { // This is the case for Likes case "post_id like": {
private async Task HandleCallbackQuery(CallbackQuery callbackQuery, CancellationToken cancellationToken)
{
switch (callbackQuery.Data)
{
// This is the case for Likes
case "post_id like":
{
var postData = _context.Posts
.FirstOrDefault(x => x.MessageId == callbackQuery.Message.MessageId);
//var postData = conn.ExecuteReader($"SELECT * FROM PostData AS pd WHERE pd.MessageId = '{ callbackQuery.Message.MessageId }'").Parse<PostData>().FirstOrDefault();
if (postData == null)
{
return;
}
var reader = _context.Votes
.FirstOrDefault(x => x.VoterId == callbackQuery.From.Id && x.PostDataId == postData.Id);
var voteData = reader;
// ...
}
// This is the case for Dislikes:
case "post_id dislike":
{
var postData = _context.Posts
.FirstOrDefault(x => x.MessageId == callbackQuery.Message.MessageId);
//var postData = conn.ExecuteReader("SELECT * FROM PostData AS pd WHERE pd.MessageId = @MessageId", new { callbackQuery.Message.MessageId }).Parse<PostData>().FirstOrDefault();
if (postData == null)
{
return;
}
var reader = _context.Votes
.FirstOrDefault(x => x.VoterId == callbackQuery.From.Id && x.PostDataId == postData.Id);
//conn.ExecuteReader("SELECT * FROM VoteData AS vd WHERE vd.VoterId = @VoterId AND vd.PostDataId = @PostDataId", new { VoterId = callbackQuery.From.Id, PostDataId = postData.Id });
var voteData = reader;
// ...
}
}
}
这段代码第一次正常运行,但第二次我总是在postdatain dislikes have NullReferenceException中,我不知道为什么://问题是_context.Posts没有值
如果_context.Posts包含null,则不会得到NullReferenceException
如何解决
检查_context.Posts
如果它是一个属性,让它有一个默认值
或者,如果它是一个字段,那么首先让它为null
如果您可以添加有关帖子的更多信息,请添加它…当您尝试访问空值上的方法或属性时,可能会出现重复的NRE。您没有发布实际的异常或提到异常发生的位置,因此只能猜测。调试代码并检查错误所在行中的变量。此外,重复问题详细解释了调试NRE的原因和技术-这是本地照片重复问题。说明书在那里。您可以比其他任何人都更快地调试它。提示:哪个变量为空?这很可能不是原因。