【问题标题】:Can I have a method that returns an array value?我可以有一个返回数组值的方法吗?
【发布时间】:2017-09-04 02:06:45
【问题描述】:

我有几个关于 C# 数组的问题。

  1. 在一个方法中,我们可以有一个返回值。我们可以返回一个数组吗?
  2. 如果返回一个数组是不可能的,我们如何使用该方法中收集的数组并在调用方法中使用?

下面是我的代码。

public ArtWorkData[,] getExcelFile(int sheetNumber)
    {
        string[,] excRecord = new string[rowCount, colCount];
        excRecord[0, 0] = { {"TOPRIGHT", "TOPLEFT"},
                            {"MIDRIGHT", "MIDLEFT},
                            {"BOTRIGHT", "BOTLEFT"} }

        return excRecord;
     }

我想知道它的逻辑以及我们如何将数组从方法中传递出去。谢谢各位。

【问题讨论】:

  • 是什么语言?
  • 抱歉没提,我用C#写的
  • 你的问题是你声明你正在返回一个ArtWorkData[,]的数组,然后你实际上尝试返回一个string[,]
  • Michael,一旦我将其更改为 string[,],一切顺利。接下来,因为数组生成了4次。我想他们会重写并使用该方法注册最后一条记录。在这种情况下如何复制数组?

标签: c# arrays


【解决方案1】:

数组是一种引用类型,因此您可以像任何引用类型一样返回对它的引用。数组还实现了IEnumerable 泛型接口,因此如果它让你感觉更好,你也可以将其转换为该接口。

例如:

public int[] GetNumbers()
{
    int[] numbers = new int[5];
    numbers[0]=34;
    return numbers;
}

public void DoStuff()
{
    IEnumerable<int> data = GetNumbers();
    ...

}

返回对引用类型的引用不会复制对象 - 它复制对它的引用。您返回数组引用的函数可以更改原始数组的内容!

【讨论】:

  • 罗伯特,感谢您提供的线索。我注意到我的错误。现在是复制数组。任何线索如何做到这一点?
  • @NerdyLuke 当然,看here
  • 罗伯特,真的很酷。我已经让它工作了。下一步是使用所有数组中的数据。需要一些计划。如果我遇到更多问题,将发布。干杯伙伴。
猜你喜欢
  • 2017-05-21
  • 2011-09-27
  • 1970-01-01
  • 2017-02-15
  • 2016-05-13
  • 2012-01-30
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多