五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > VS2015 C#未將對象引用設(shè)置到對象的實例

VS2015 C#未將對象引用設(shè)置到對象的實例

文章來源:365jz.com     點擊數(shù):3942    更新時間:2018-05-16 14:23   參與評論

  “未將對象引用設(shè)置到對象的實例”相信這個問題只要是寫過代碼的不論技術(shù)高低都會遇到過,這句話的意思就是說我們在引用對象之前沒有對對象進行初始化。一般是由于我們引用的對象為空時造成的。經(jīng)常會在我們我們傳遞參數(shù)的時候出現(xiàn)這樣的問題,這時候我們就要考慮我們調(diào)用的參數(shù)是否為空了。

  下面是我自己遇到的問題:

  
 

 我是在三層架構(gòu)中B層調(diào)用接口的時候出現(xiàn)的問題,自己分析是因為被調(diào)用的接口沒有被成功創(chuàng)建,因為我是通過抽象工廠創(chuàng)建接口的。錯誤點如下:

  

  

  代碼中的類名跟實際類名不同導致的,這里代碼中多了一個1,雖然是馬虎出的錯,也要把這種錯誤的原理搞清楚。這次可能只是類名不同,下次就不一定了,下面是我從網(wǎng)上找到的其他可能導致這種錯誤的原因,希望你能夠?qū)δ兴鶐椭?/span>

  1、ViewState對象為Null。

  2、DateSet為空。

  3、sql語句或Datebase的原因?qū)е翫ataReader空。

  4、聲明字符串變量時未賦空值就應(yīng)用變量。

  5、未用new初始化對象。

  6、Session對象為空。

  7、對控件賦文本值時,值不存在。

  8、使用Request.QueryString()時,所獲取的對象不存在,或在值為空時未賦初始值。

  9、使用FindControl時,控件不存在卻沒有做預處理。

 

  10、重復定義造成未將對象引用設(shè)置到對象的實例錯。


一、網(wǎng)絡(luò)上的一般說法

1、ViewState 對象為Null。
2、DateSet 空。
3、sql語句或Datebase的原因?qū)е翫ataReader空。
4、聲明字符串變量時未賦空值就應(yīng)用變量。
5、未用new初始化對象。
6、Session對象為空。
7、對控件賦文本值時,值不存在。
8、使用Request.QueryString()時,所獲取的對象不存在,或在值為空時未賦初始值。
9、使用FindControl時,控件不存在卻沒有做預處理。
10、重復定義造成未將對象引用設(shè)置到對象的實例錯誤.

 

二、 (1)所設(shè)置的變量為空值或沒有取到值,一般出現(xiàn)在傳遞參數(shù)的時候出現(xiàn)這個問題,也會在使用DataGrid或gridview或datalist等數(shù)據(jù)控件時出現(xiàn).

  (2)控件名稱與codebehind里面的沒有對應(yīng)

  (3)未用new初始化對象

  (4)在程序中所引用的控件不存在

  解決方法:

  (1)使用try..catch...finally捕捉錯誤,或直接用response.write()輸出所取的變量值

  (2)查看代碼中是否存在未初始化的變量

 

三、SqlConnection.Open   未將對象引用設(shè)置到對象的實例

在使用VS2003開發(fā) ASP.NET程序時候 有時候操作 SqlConnection對象的Open()方法時候會出現(xiàn)

未將對象引用設(shè)置到對象的實例。

說明: 執(zhí)行當前 Web 請求期間,出現(xiàn)未處理的異常。請檢查堆棧跟蹤信息,以了解有關(guān)該錯誤以及代碼中導致錯誤的出處的詳細信息。

異常詳細信息: System.NullReferenceException: 未將對象引用設(shè)置到對象的實例。

源錯誤: 
。。。。

conn.Open();

......

跟蹤調(diào)試也肯定可以確定 對conn進行new 操作 但是程序經(jīng)常在這個地方報錯,但是有時候重啟服務(wù)器或者重啟IIS有能正常使用了。 怎么調(diào)試也找不到問題  那么這個時候可能是 你本機上安裝的.NET FRAMEEWORK 框架有問題,可能沒有沒有安裝SP1.1補丁  
需要打NET FRAMEEWORK1.1 SP1的補丁,到微軟官方網(wǎng)站下載安裝后就好了。

 

四、一般出現(xiàn)NullReferenceException異常的我個人總結(jié)有以下情況:

1、對象所在的命名空間沒有引用
2、對象沒有實例化
3、出現(xiàn)異常,實例化失敗對象為 null

 

 五、IIS 扛不住的時候,也會出現(xiàn)上面的錯誤。

當應(yīng)用程序的用戶訪問量超過它能承受的范圍之后,就會出錯。
改善你的程序,使用緩存,盡量減少與數(shù)據(jù)庫交互的次數(shù)。

 

六、我碰到的問題是,無意重置了DataSet引用,后出現(xiàn)這個問題,請大家好好查查自己的代碼,是不是在其他地方重新引用了,在我的程序中DataSet被設(shè)置成全局對象。

 

七、當你發(fā)現(xiàn)所有的方法不行時,打上.netframework的補丁

 

、我出現(xiàn)這個錯誤,僅僅因為網(wǎng)站里面DAL的dll文件失效,業(yè)務(wù)層實例化不了IDAL里面的對象 

但也浪費了一下午的時間在調(diào)代碼上

 

九、為每個可疑的地方添加監(jiān)視,起初以為是sql語句寫錯了,查了幾遍,換用sql語句還是報同樣的錯誤。根據(jù)google出來的結(jié)果,提到對象重定義會引起這樣的結(jié)果。根據(jù)這一提示,替換掉頁面級全局對象,總算搞定了。

       class DBOper{
            /*構(gòu)造函數(shù)沒有函數(shù)體
             *
             *c#寫的 一系列對數(shù)據(jù)庫操作方法
             *
             *
       }
       最初為了省事,盡量少聲明對象,只在全局聲明了一個private DBOper db=new DBOper(),在不同方法里面調(diào)用該對象的方法,以避免為其定義而造成內(nèi)存浪費。后來代碼重構(gòu),在編譯的時候并未報錯。但是當運行的時候,就出現(xiàn)” NullReferenceException: 未將對象引用設(shè)置到對象的實例“。結(jié)果就因它而搞了幾個小時。后來根據(jù)google的結(jié)果,將不同方法中使用到的DBOper對象一一重定義為局部變量(一個方法里面只定義一個DBOper對象,多次調(diào)用其方法均正常),去掉全局的private變量。再運行的時候就正常了。

如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答?。?點擊進入論壇

發(fā)表評論 (3942人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號