我在运行时收到此错误: 对象引用未设置为对象的实例
我的问题是我在这里正确使用了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;
}
}
}
请回答我在这里做错了什么。
答案 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();
}