Được rồi, bạn cần một số tốt hơn null checking và một số mã thận trọng hơn tại đây.
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
}
}
không thể chấp nhận được.
Trước tiên, hãy kiểm tra null
if (array != null)
{
if (array.Element != null)
vì đơn giản, bạn có thể sử dụng &&
if (array != null && array.Element != null)
sau đó, bên trong đó nếu chúng tôi sử dụng một vòng lặp for (since you're stuck on arrays) và vô giá trị kiểm tra xem nó
for (int i = 0; i < array.Element; ++i)
{
if (array.Element[i] != null && array.Element[i].Object != null)
{
sau đó, vì bạn có mảng lồng nhau, chúng tôi lặp lại lần nữa. Điều này được gọi là nested loop, và nó thường là thực hành xấu, tôi sẽ cho bạn thấy lý do tại sao nó hoạt động trong một giây.
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))
{
Bây giờ, với tất cả sự khó chịu lồng nhau xấu xí, chúng tôi đã phát hiện ra rằng Mặt hàng của bạn không rỗng. Trên hết, bạn có quyền truy cập TẤT CẢ các giá trị tiềm năng ở đây và có thể nhóm chúng theo ý muốn. Đây là cách tôi sẽ đặt toàn bộ thứ lại với nhau để đơn giản hóa.
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
}
Tại sao không sử dụng một 'Danh sách 'thay vì một mảng? –
Hai điều kiện trong dòng đầu tiên giống nhau - có lẽ đó không phải là cố ý? –
Tôi xin lỗi, cần có hai điều kiện khác nhau, tôi đã thay đổi nó. – Victor