一般在C#中造成“未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例”錯(cuò)誤都是控件名稱(chēng)與codebehind里面的沒(méi)有對(duì)應(yīng),對(duì)于初學(xué)編程的人,而在編碼中重復(fù)定義也會(huì)造成這種問(wèn)題的產(chǎn)生。
以下是一個(gè)例子:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace weste
{
public class study : System.Web.UI.Page
{
public string[] c;
private void Page_Load(object sender, System.EventArgs e)
{
aaa();
bbb();
}
private void aaa()
{
string[] c=new string[3];
//c=new string[3];
c[0]="我們?cè)?;
c[1]="西部E網(wǎng)";
c[2]="學(xué)習(xí)C#";
}
private void bbb()
{
Response.Write(c[0]+c[1]+c[2]);
}
#region Web 窗體設(shè)計(jì)器生成的代碼
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
運(yùn)行后會(huì)我們發(fā)現(xiàn),會(huì)有以下錯(cuò)誤產(chǎn)生:
異常詳細(xì)信息: System.NullReferenceException: 未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例。
源錯(cuò)誤:
行 33: private void bbb()
行 34: {
行 35: Response.Write(c[0]+c[1]+c[2]);
行 36: }
行 37:
很多初學(xué)者都會(huì)有疑問(wèn):我已經(jīng)定義了變量 public string[] c,而且也進(jìn)行了實(shí)例化 string[] c=new string[3],但是為什么在調(diào)用數(shù)組c的時(shí)候還會(huì)報(bào)“未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例”的錯(cuò)誤呢?
問(wèn)題出在string[] c=new string[3]這里,在前面已經(jīng)將數(shù)組c定義后,在函數(shù)aaa()中再次將數(shù)組定義,造成前面定義的數(shù)組不能實(shí)例化。只需要將 string[] c=new string[3]修改成 c=new string[3] 即可。