0

次のような配列を介してリストを作成しようとしています:

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 エラーが発生し続けます。完全に明らかなものを見逃さなければならないことはわかっています。他の方法で新しい配列を宣言する必要がありますか?

4

1 に答える 1

6

を作成するときappListは、配列自体を作成するだけです。.NETは、操作するアプリケーションオブジェクトを配列に自動的に入力しません。新しいアプリケーションオブジェクトを作成し、そのオブジェクトにプロパティを設定する必要があります。その後、オブジェクトを配列に割り当てることができます。

Application.NET Frameworkには複数のクラスがあり、どれもコードに一致していないようです。したがって、以下の例では、それ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ます。

于 2013-03-21T20:49:19.480 に答える