C#函数返回数组

16
/// <summary>
/// Returns an array of all ArtworkData filtered by User ID
/// </summary>
/// <param name="UsersID">User ID to filter on</param>
/// <returns></returns>
public static Array[] GetDataRecords(int UsersID)
{
    ArtworkData[] Labels;
    Labels = new ArtworkData[3];

    return Labels[];
}

我遇到了一个语法错误,需要在 return Labels[] 后加上分号;

这样做正确吗?

6个回答

30

您试图返回类型为ArtworkData的变量Labels,而不是数组。因此,需要在方法签名中将其作为返回类型。您需要修改您的代码如下:

public static ArtworkData[] GetDataRecords(int UsersID)
{
    ArtworkData[] Labels;
    Labels = new ArtworkData[3];

    return Labels;
}

Array[] 实际上是一个 Array 的数组,如果这样说可以理解的话。


6

return Labels;应该能解决问题!

public static ArtworkData[] GetDataRecords(int UsersID)
{
    ArtworkData[] Labels;
    Labels = new ArtworkData[3];

    return Labels;
}

5
public static ArtworkData[] GetDataRecords(int UsersID)
{
    ArtworkData[] Labels;
    Labels = new ArtworkData[3];

    return Labels;
}

这应该可以工作。

只有在创建数组或访问数组时才使用方括号。此外,Array[] 返回的是一个数组的数组。你需要返回类型为 ArtworkData[] 的数组。


2

需要进行两个更改:

  1. 将该方法的返回类型从 Array[] 更改为 ArtWorkData[]
  2. 将返回语句中的 Labels[] 更改为 Labels

0

你应该返回变量而不是括号

Return Labels

-4
 static void Main()
     {
             for (int i=0; i<GetNames().Length; i++)
               {
                    Console.WriteLine (GetNames()[i]);
                }
     }

  static string[] GetNames()
   {
         string[] ret = {"Answer", "by", "Anonymous", "Pakistani"};
         return ret;
   }

2
格式化代码并添加一些解释,这看起来很糟糕。 - Gnqz
1
除了你在数组中硬编码的明显错误之外,你的代码还存在巨大的低效率。每次调用 GetNames() 函数时,你都需要进入函数调用并创建一个新字符串数组,并返回该数组的引用。尽管每个数组在理论上都是相同的,但每次这样做都会创建一个全新的实例,这是空间上的低效率。这也是时间上的低效率,因为你可以将数组存储在 Main 中,甚至可以单独存储长度(调用 .Length 也很耗时)。 - ragingasiancoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接