错误'对象引用未设置对象实例' [英] Error 'object reference not set instance of object'

查看:95
本文介绍了错误'对象引用未设置对象实例'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I如果refOther中没有任何内容,则在调试期间会收到此错误,并且如果
语句,它将继续通过所有其他嵌套。当我调试并将鼠标悬停在refOther上时,值为'null'。我怎么能设置这个如果没有任何东西在refOther它没有命中其他嵌套的if语句。

foreach (DataRow dr in drs.Rows)
            {
                // Lookup reason in Reference_OtherReason table
                REFERENCE_OTHERREASON refOther = (from db in dc.REFERENCE_OTHERREASONs
                                                  where db.deleted_by == -1
                                                  && db.VALUE == dr["OtherReason"].ToString()
                                                  select db).FirstOrDefault();

                if (float.Parse(dr["Contract"].ToString()) > 0)
                {

                    hrsReg += double.Parse(dr["Contract"].ToString());
                }

                if (float.Parse(dr["Other"].ToString()) > 0)
                {
                    if (dr["OtherReason"].ToString().ToLower().StartsWith("training"))
                    {
                        if (refOther.OTHERREASON_CUSTOMER == 1)
                        {
                            hrsMR += double.Parse(dr["Other"].ToString());
                        }
                        else
                        {
                            hrsReg += double.Parse(dr["Other"].ToString());
                        }
                    }
                    else if (dr["OtherReason"].ToString().ToLower().StartsWith("alt"))
                    {
                        if (dr["OtherReason"].ToString().ToLower() == "alt.job rainout hrs")
                        {
                            if (refOther.OTHERREASON_ALTJOBNUM == 1)
                            {
                                hrsMR += double.Parse(dr["Other"].ToString());
                            }
                            else
                            {
                                hrsReg += double.Parse(dr["Other"].ToString());
                            }
                        }
                        else
                        {
                            if (refOther.OTHERREASON_ALTJOBNUM == 1)
                            {
                                hrsReg += double.Parse(dr["Other"].ToString());
                            }
                            else
                            {
                                hrsMR += double.Parse(dr["Other"].ToString());
                            }
                            
                        }
                    }
                    else if (dr["OtherReason"].ToString().ToLower().StartsWith("rework"))
                    {
                        if (dr["OtherReason"].ToString().ToLower() == "Rework Rainout Hrs")
                        {
                            if (refOther.OTHERREASON_ALTJOBNUM == 1)
                            {
                                hrsMR += double.Parse(dr["Other"].ToString());
                            }
                            else
                            {
                                hrsReg += double.Parse(dr["Other"].ToString());
                            }
                        }
                        else
                        {
                            if (refOther.OTHERREASON_CUSTOMER == 1)
                            {
                                hrsReg += double.Parse(dr["Other"].ToString()); // org
                                //hrsMR += double.Parse(dr["Other"].ToString());
                            }
                            else
                            {
                                hrsMR += double.Parse(dr["Other"].ToString()); // org
                                //hrsReg += double.Parse(dr["Other"].ToString());
                            }
                        }
                    }
                    else if (dr["OtherReason"].ToString().ToLower().StartsWith("mentoring"))
                    {
                        hrsReg += double.Parse(dr["Other"].ToString()); // org
                    }
                }

                if (float.Parse(dr["Rain"].ToString()) > 0)
                {
                    hrsMR += double.Parse(dr["Rain"].ToString());
                }


                if (float.Parse(dr["Travel"].ToString()) > 0)
                {
                    hrsTR += double.Parse(dr["Travel"].ToString());
                }

            }

推荐答案

if( refOther!= null&& ...

如果refOther不为null,则只检查第二个条件,意味着你在此之后可以使用refOthers。但是refOther!= null必须留在第一个位置!

the second condition is just checked if refOther is not null, means you can use refOthers after that in the condition. But refOther != null has to stay on first position!

问候,Chris


这篇关于错误'对象引用未设置对象实例'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆