我想知道如何在不使用array.length方法的情况下查找数组的长度,而不是array.length方法实现什么?
我有一些功课来完成一些arbituary数组排序而不使用array.length方法我很好奇c#如何找到数组长度它是否通过数组计算每个非null值并返回一个值或者是否存在与数组长度相关联的特定内存值,可以通过好奇心访问更多其他任何我只是想知道长度方法幕后发生了什么
答案 0 :(得分:2)
这是一个非常糟糕的方式,但要涵盖所有 工作的理由,但我强烈反对这一点。
int[] test = new int[10];
int count = 0;
try
{
for (; ; )
{
count++;
test[count].ToString();
}
}
catch (IndexOutOfRangeException ex)
{
}
Console.Write(count);
Console.ReadKey();
答案 1 :(得分:1)
您可以使用theArray.GetLength(0)
,但它与使用theArray.Length
基本相同,只是更详细......
答案 2 :(得分:1)
这将是一种方式:
int count = 0;
foreach (var item in YourArray)
{
count++;
}
count将保存数组中有多少项。
编辑:
当然,如果你不能使用可怕的长度属性,你可以使用Count()
方法。
答案 3 :(得分:0)
在不使用Array.Length
属性的情况下获取数组的长度几乎是不可能的。
嗯,你可以:
foreach
语句中或通过LINQ
)并计算它们给你的元素,但它会
只是一个间接 - ArrayEnumerator
显然使用
内部Array.Length
。建议的解决方案:
但可能意味着使用数组终止符,比如'\ 0'字符C运行时用来终止它的字符串。
要使用数组终止符,您只需选择一些值(通常是最大或最小)并将其用作数组终止符:
Int32[] data = new Int32[] {10, -5, 100, Int32.MinValue};
PrintDataWithoutLength(data, Int32.MinValue);
PrintDataWithoutLength<T>(T[] data, T terminator)
{
for(Int32 i = 0; !data[i].Equals(terminator) ; i++)
{
Console.WriteLine(data[i]);
}
}