首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#多维数组与Java多维数组

C#多维数组与Java多维数组
EN

Stack Overflow用户
提问于 2019-07-30 21:21:46
回答 1查看 108关注 0票数 0

我对C#比较陌生,与Java语言相比,它处理多维数组的方式让我很不爽。

我确信有一个简单的解决方案,而且我会因为没有意识到这一点而感到非常愚蠢,但我似乎无法在网上找到答案,也找不到答案。

考虑java中的以下代码片段:

代码语言:javascript
复制
Object firstElement(Object[] arr) {
   return arr[0];
}

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

代码语言:javascript
复制
object firstElement(Array arr) {
   foreach (object obj in arr)
      return obj;
}

有没有可能在函数中没有foreach循环的情况下这样做呢?我曾尝试使用arr.GetValue(0)返回对象,但如果数组不是一维的,这将再次抛出错误。感谢你帮助这位C#新手!

EN

回答 1

Stack Overflow用户

发布于 2019-10-05 23:15:31

C#期望您在多维数组中寻址每一维,即使您想要访问,比如说,0,0。

代码语言:javascript
复制
Object firstElement(Object[] arr) {
   return arr[0];
}

由于这个原因,上面的代码将在编译时抛出。

这段代码只接受一维数组。试着这样做:

代码语言:javascript
复制
Object firstElement(Object[][] arr) {
   return arr[0][0];
}

根据尺寸的大小调整支架的大小。

对于object或int这样的原语,使用关键字别名也更为常见。我确实怀疑您会在某个时候用实际的类/结构实例或原语替换对象。

代码语言:javascript
复制
object firstElement(object[][] arr) {
   return arr[0][0];
}

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

/edit:我似乎误解了你的意图。我相信你会尝试在每一行中获取的第一个元素。如果是这样的话,试试这个:

代码语言:javascript
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57272770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档