如果我定义一个整数数组:
int[] a = new int[13];
我没有插入任何项目,我怎么知道数组a是否包含任何项目或者是否为空? 我是否必须遍历所有a.Length指数? 在列表中
List<int> b = new List<int>();
如果我检查:
if(b.Count == 0)
{
// The list does not contain any items.
}
是否有相同的方法来检查数组? 我在互联网上找到了一个数组是空还是空的检查。 在我的情况下,我确信数组不是null。 我只是想知道它是否包含任何项目。 我不关心数组中的哪个位置,也不关心哪个项目。 非常感谢你提前。
答案 0 :(得分:1)
由于它是一个整数,您可以检查所有值是否为零:
if (array.All(y=>y == 0))
{
//If all values are zero, this will proceed on this statement.
}
答案 1 :(得分:0)
int[] a = new int[13]; // [0,0,0,0,0,0,0,0,0,0,0,0,0]
分配一个包含13个项目的数组。每个项目的值为0
或default(int)
。
所以你必须检查
bool isEmpty = a.All(x => x == default(int));
如果0
是数组中的有效值,则应使用可空类型:
int?[] a = new int?[13]; // [null,null,null,null,null,null,null,null,null,null,null,null,null,]
bool isEmpty = a.All(x => !x.HasValue);
答案 2 :(得分:0)
定义这样的数组时:
int[] a = new int[13];
你得到一个包含13个元素的数组。它们都具有零值,因为它是int的默认值。
所以你能做的是:
bool hasElements = a.Any(x => x != 0);
答案 3 :(得分:0)
您可以创建自己的类来封装Array
类,并跟踪数组是否已更改。
public class MyArray<T>
{
private T[] array;
private bool altered = false;
public MyArray(int size)
{
array= new T[size + 1];
}
public T this[int index]
{
get
{
return array[index];
}
set
{
altered = true;
array[index] = value;
}
}
public bool HasBeenAltered()
{
return altered;
}
}
函数HasBeenAltered()
告诉数组的任何项是否已更新。
MyArray<int> arr = new MyArray<int>(10);
arr.HasBeenAltered(); // false
arr[4] = 4;
arr.HasBeenAltered(); // true