对象引用未设置为运行时出现的对象异常的实例

时间:2010-04-08 19:22:17

标签: c#

我在运行时收到此错误: 对象引用未设置为对象的实例

我的问题是我在这里正确使用了stringbuilder数组。因为我是C#的新手。我认为它与我的stringbuilder数组的问题。以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
using System.Collections;


public partial class Testing : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }


    [WebMethod]
    public static string SendMessage()
    {
        try
        {
            al2c00.ldap ws = new al2c00.ldap();
            Hashtable htPeople = new Hashtable();

            //DataTable dt = ws.GetEmployeeDetailsBy_NTID("650FA25C-9561-430B-B757-835D043EA5E5", "john");

            StringBuilder[] empDetails = new StringBuilder[100];


            string num = "ambreen";
            empDetails[0].Append("amby");
            num = empDetails[0].ToString();

            htPeople.Add("bellempposreport", num);


            JavaScriptSerializer jss = new JavaScriptSerializer();

            string output = jss.Serialize(htPeople);
            return output;
        }
        catch(Exception ex)
        {
            return ex.Message + "-" + ex.StackTrace;
        }
    }
}

请回答我在这里做错了什么。

6 个答案:

答案 0 :(得分:3)

empDetails目前是一个StringBuilder的数组,empDetails[0](数组中的第一个StringBuilder)未实例化,因此您得到的错误。你应该做的不是制作一个StringBuilder的数组(除非那是你想要的......),你应该只做一个StringBuilder

StringBuilder empDetails = new StringBuilder();

然后追加你可以做:

empDetails.Append("stringhere");

答案 1 :(得分:2)

此行创建一个包含100个空引用的数组:

StringBuilder[] empDetails = new StringBuilder[100];

如果您想使用empDetails[0],则必须先为其指定内容:

empDetails[0] = new StringBuilder();

我不清楚为什么你要创建一个100 StringBuilders的数组。你不能这样做吗?

htPeople.Add("bellempposreport", "ambreen");

答案 2 :(得分:2)

不要为此赋值:

string num = "ambreen";

因为当你重新分配时它会丢失。

此:

StringBuilder[] empDetails = new StringBuilder[100]; 
//no need for creating an array of string builders.

应该是这样的:

StringBuilder empDetails = new StringBuilder();

empDetails.Append("amby");

string num = empDetails.ToString();

http://msdn.microsoft.com/en-us/library/2839d5h5(VS.71).aspx

答案 3 :(得分:1)

我认为他可能希望预先调整为100

StringBuilder empDetails = new StringBuilder(100);
empDetails.Append("stringhere");

答案 4 :(得分:0)

如果要合并大型文本文档,请仅使用stringbuilder。如果你只是简单地使用string.Format加入一些(< 10)项目,或者只是将它们加在一起,例如

string myEmployee = string.Format("First:{0} Last: {1} Middle: {2}", "Stack", "Overflow", "C#");

答案 5 :(得分:0)

谢谢大家。使用下面的代码解决了我的问题:

        //Creating stringbuilder array for storing key values
        StringBuilder[] empDetails = new StringBuilder[70];

        for (int i = 0; i < empDetails.Length; i++) 
        { 
            empDetails[i] = new StringBuilder(); 
        }