C# 传递数组给函数
在 C# 中,您可以传递数组作为函数的参数。您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。
实例
下面的实例演示了如何传递数组给函数:
实例
using System;
namespace ArrayApplication
{
class MyArray
{
double getAverage(int[] arr, int size)
{
int i;
double avg;
int sum = 0;
for (i = 0; i < size; ++i)
{
sum += arr[i];
}
avg = (double)sum / size;
return avg;
}
static void Main(string[] args)
{
MyArray app = new MyArray();
/* 一个带有 5 个元素的 int 数组 */
int [] balance = new int[]{1000, 2, 3, 17, 50};
double avg;
/* 传递数组的指针作为参数 */
avg = app.getAverage(balance, 5 ) ;
/* 输出返回值 */
Console.WriteLine( "平均值是: {0} ", avg );
Console.ReadKey();
}
}
}
namespace ArrayApplication
{
class MyArray
{
double getAverage(int[] arr, int size)
{
int i;
double avg;
int sum = 0;
for (i = 0; i < size; ++i)
{
sum += arr[i];
}
avg = (double)sum / size;
return avg;
}
static void Main(string[] args)
{
MyArray app = new MyArray();
/* 一个带有 5 个元素的 int 数组 */
int [] balance = new int[]{1000, 2, 3, 17, 50};
double avg;
/* 传递数组的指针作为参数 */
avg = app.getAverage(balance, 5 ) ;
/* 输出返回值 */
Console.WriteLine( "平均值是: {0} ", avg );
Console.ReadKey();
}
}
}
当上面的代码被编译和执行时,它会产生下列结果:
平均值是: 214.4
C# 数组
mark900
ma-***k@outlook.com
实例其实也可以只传数组参数,数组大小不是必须:
using System; namespace ArrayApplication { class MyArray { double getAverage(int[] arr) { int i; double avg; int sum = 0; for (i = 0; i < arr.Length; ++i) { sum += arr[i]; } avg = (double)sum / arr.Length; return avg; } static void Main(string[] args) { MyArray app = new MyArray(); /* 一个带有 5 个元素的 int 数组 */ int [] balance = new int[]{1000, 2, 3, 17, 50}; double avg; /* 传递数组的指针作为参数 */ avg = app.getAverage(balance) ; /* 输出返回值 */ Console.WriteLine( "平均值是: {0} ", avg ); Console.ReadKey(); } } }数组的遍历也可以用 foreach 来进一步简化:
using System; namespace ArrayApplication { class MyArray { double getAverage(int[] arr) { double avg; int sum = 0; foreach(int member in arr) { sum += member; } avg = (double)sum / arr.Length; return avg; } static void Main(string[] args) { MyArray app = new MyArray(); /* 一个带有 5 个元素的 int 数组 */ int [] balance = new int[]{1000, 2, 3, 17, 50}; double avg; /* 传递数组的指针作为参数 */ avg = app.getAverage(balance) ; /* 输出返回值 */ Console.WriteLine( "平均值是: {0} ", avg ); Console.ReadKey(); } } }mark900
ma-***k@outlook.com
HUST_xudong
159***4164@qq.com
传递交错数组(或者二维数组)作为参数:
using System; namespace ArrayApplication { class Program { static void Main(String[] args) { int[][] array = new int[3][]; array[0] = new int[] { 0, 1 }; array[1] = new int[] { 2, 3, 4 }; array[2] = new int[] { 5, 6, 7, 8 }; Program pro = new Program(); int summ=pro.getArea(array); //函数名作为参数 Console.WriteLine("{0}", summ); } public int getArea(int[][] array) { int sum=0; for (int j = 0; j < array.Length;j++ ) foreach (int i in array[j]) sum += i; return sum; } } }HUST_xudong
159***4164@qq.com
影子先生
198***9803@qq.com
传递交错数组计算平均值:
using System; namespace Programe { class ways { public double GetAvg(int[][] arr) { int sum = 0; //计数器的存在是很有必要的 int count = 0; double avg; { for (int j = 0; j < arr[i].Length; j++) { sum += arr[i][j]; count++; } } avg = (double)sum / count ; return avg; } static void Main() { ways average = new ways(); double avg = 0; int [][] array = new int[][]{ new int[] { 1, 2, 3 },new int[] { 1, 2, 3, 4, 5, 6, }}; avg = average.GetAvg(array); Console.WriteLine(avg); Console.ReadKey(); } } }影子先生
198***9803@qq.com
时光迁
zho***521@bupt.edu.cn
上面“影子先生”的传递交错数组计算平均值代码少一行,完整的应该是:
using System; namespace Programe { class ways { public double GetAvg(int[][] arr) { int sum = 0; int count = 0; double avg; for (int i = 0; i < arr.Length; i++) { for (int j = 0; j < arr[i].Length; j++) { sum += arr[i][j]; count++; } } avg = (double)sum / count; return avg; } static void Main() { ways average = new ways(); double avg = 0; int[][] array = new int[][] { new int[] { 1, 2, 3 }, new int[] { 1, 2, 3, 4, 5, 6, } }; avg = average.GetAvg(array); Console.WriteLine(avg); Console.ReadKey(); } } } //最终结果为3.即求交错数组中所有元素和的平均值时光迁
zho***521@bupt.edu.cn