[英]Creating an array from scratch while code is running
我试图通过像这样的数组创建列表:
private Application[] GetApps()
{
DataSet ds = new Dataset();
string query = "query";
ds = GetData(query);
var appList = new Application[ds.Tables[0].Rows.Count];
for(var i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
DataRow item = ds.Tables[0].Rows[i];
appList[i].Name = item["Name"].ToString();
appList[i].Confidentiality = int.Parse(item["Conf"].ToString());
appList[i].Id = item["ID"].ToString();
}
return appList;
}
我不断收到一个对象为null的错误,并且我知道我必须丢失一些完全看不见的东西。 我是否需要以其他方式声明新数组?
创建appList
,您仅创建数组本身。 .NET不会自动使用应用程序对象填充数组供您操作。 您需要创建一个新的Application对象,并在该对象上设置属性,然后可以将该对象分配给数组。
.NET框架中有多个Application
类,它们似乎都不与您的代码匹配,因此下面的示例将简单地假定Application
是您自己设计的自定义类型。
for(var i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow item = ds.Tables[0].Rows[i];
Appliction app = new Application();
app.Name = item["Name"].ToString();
app.Confidentiality = int.Parse(item["Conf"].ToString());
app.Id = item["ID"].ToString();
appList[i] = app
}
顺便说一句,请注意,您可以将i <= x - 1
替换为i < x
,并且行为完全相同。
最后,如果所有访问器都可能返回null,则应该对其进行检查。 例如,如果item["Name"]
返回null,则调用item["Name"].ToString()
等同于调用null.ToString()
,这也会导致NullReferenceException
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.