虽然value不为null,但我得到的是NullReferenceException

时间:2013-09-16 09:20:07

标签: c#

虽然返回值不为null,但我在

处捕获到了NullReferenceException
  

var currentTakipciler = TwitterCacheDepo.GetTakipciler(TemaUserID)

我看了调试中的返回值,它不是null但我得到nullreferenceexception。

try
{
    var currentTakipciler = TwitterCacheDepo.GetTakipciler(TemaUserID);
}
catch (Exception ex)
{
    Utils.LogYaz(ex.ToString());
}

public class TwitterCacheDepo
{
    ...
    ...

    public static Dictionary<int, string> GetTakipciler(string TemaUserID)
    {
        try
        {
            Dictionary<int, string> returnValue = new Dictionary<int, string>();
            if (allTakipciler != null && allTakipciler.Rows.Count > 0)
            {
                returnValue = allTakipciler.AsEnumerable().Where(x => x.Field<DateTime?>("BitTarih").Equals(null) && x.Field<string>("TemaUserID").Equals(TemaUserID)).ToDictionary(x => x.Field<int>("ID"), y => y.Field<string>("UserID"));// SqlDataBase.SqlGetTable("SELECT ID,TemaUserID,UserID,BitTarih FROM TBL_TwitterUserTakipciler WHERE BitTarih IS NULL SID = " + 4663);
                return returnValue;
            }
            else
            {
                allTakipciler = SqlDataBase.SqlGetTable("SELECT ID,TemaUserID,UserID,BitTarih FROM TBL_TwitterUserTakipciler WHERE SID = " + 4663);
                return allTakipciler.AsEnumerable().Where(x => x.Field<DateTime?>("BitTarih").Equals(null) && x.Field<string>("TemaUserID").Equals(TemaUserID)).ToDictionary(x => x.Field<int>("ID"), y => y.Field<string>("UserID"));
            }
        }
        catch (Exception ex)
        {
            Utils.LogYaz(ex.Message.ToString());
            return null;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您需要查看完整堆栈跟踪并检查引发空引用异常的确切行号。这将清楚地表明发生了什么。

要在不使用调试器的情况下获得堆栈跟踪运行,因为正如您所说,使用调试器无法重现问题。