よし、ここではより良いnull チェックと、より慎重なコードが必要です。
if (array.Element[0].Object.Length > 0 || array.Element[1].Object.Length > 0) //making sure there's at least one Object array that has values
{
if (array.Element[0].Object[0].Item.Length != 0 || array.Element[1].Object[0].Item.Length != 0) //this is where I check that at least one of the Items (strings) is not empty
{
// execute code here
}
}
受け入れられないだけです。
まず、nullチェックをしましょう
if (array != null)
{
if (array.Element != null)
簡単にするために、次を使用できます&&
if (array != null && array.Element != null)
次に、そのif内で、forループを使用し(配列にこだわっているため)、nullチェックします
for (int i = 0; i < array.Element; ++i)
{
if (array.Element[i] != null && array.Element[i].Object != null)
{
次に、ネストされた配列があるため、再びループします。これはネストされたループと呼ばれ、一般的に悪い習慣です。なぜそれが機能するのかをすぐに説明します。
for (int o = 0; o < array.Element[i].Object.length; ++o)
{
if (array.Element[i].Object[o] != null && !string.IsNullOrEmpty(array.Element[i].Object[o].Item))
{
さて、その醜いネストされたループのすべてで、Item が null ではないことがわかりました。その上、ここですべての潜在的な値にアクセスでき、好きなようにグループ化できます。簡単にするために全体をまとめるとこうなります。
List<string> arrayValues = new List<string>();
if (array != null && array.Element != null)
{
for (int i = 0; i < array.Element.length; ++i)
{
//bool found = false;
if (array.Element[i] != null && array.Element[i].Object != null)
{
for (int o = 0; o < array.Element[i].Object.length; ++o)
{
if (array.Element[i].Object[o] != null && !string.IsNullOrEmpty(array.Element[i].Object[o].Item))
{
arrayValues.Add(array.Element[i].Object[o].Item);
//if you want to drop out here, you put a boolean in the bottom loop and break and then break out of the bottom loop if true
//found = true;
//break;
}
}
}
//if (found)
// break;
}
}
if (arrayValues.Count > 0)
{
//do stuff with arrayValues
}