C#多维数组与Java多维数组 - java

我对C#还是一个新手,与Java相比,它处理多维数组的方式困扰我很多。

我敢肯定有一个简单的解决方案,而且我对没有意识到它会感到非常愚蠢,但是我似乎无法在网上找到答案或自己弄清楚。

考虑一下Java中的以下代码片段:

Object firstElement(Object[] arr) {
   return arr[0];
}

这将返回任意数量维的数组的第一个元素;但是,在C#中,这将引发大于一维的错误,因为它无法将多维数组识别为对象数组。我发现的唯一方法是将多维数组转换为System.Array,然后使用以下代码:

object firstElement(Array arr) {
   foreach (object obj in arr)
      return obj;
}

在函数中没有foreach循环的情况下甚至可以做到这一点?我尝试使用arr.GetValue(0)返回对象,但是如果数组不是一维的,这将再次引发错误。感谢您帮助这个C#新手!

参考方案

C#希望您可以解决多维数组中的每个维度,即使您要访问的是[0,0]。

Object firstElement(Object[] arr) {
   return arr[0];
}

因此,以上代码将在编译时抛出。

此代码仅采用一维数组。尝试以下方法:

Object firstElement(Object[][] arr) {
   return arr[0][0];
}

根据尺寸调整支架数量。

对诸如object或int之类的基元使用关键字别名也更为常见。我确实怀疑您会在某个时候用实际的类/结构实例或基元替换对象。

object firstElement(object[][] arr) {
   return arr[0][0];
}

我建议您阅读的是“多维”数组的两种不同类型:Jagged和实际的multidimensional数组。关键区别在于,多维数组中每一行必须具有相同数量的列,而在这方面,锯齿状数组可能是不规则的。

/编辑:
我似乎不得不误解了你的意图。我相信您会尝试获取每一行的每个第一个元素。如果是这种情况,请尝试以下一种方法:

List<object> firstElements(object[][] arr) 
{
    List<object> firsts = new List<object>();

    for(int i = 0; i < arr.length; i++)
    {
       firsts.Add(arr[i][0]);
    }

    return firsts;
}

Java-固定大小的列表与指定初始容量的列表之间的差异 - java

我在理解这一点上遇到了问题。当我们做 List<Integer> list = Arrays.asList(array); 我们不能在该列表上使用添加,删除之类的方法。我知道Arrays.asList()返回固定大小的列表。我不明白的是,如果我们创建一个具有指定初始容量的列表,例如List<Integer> list2 = new A…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

从方法返回数组-Java - java

private static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…