
C#数组如何作为参数传递
1、int[]arr=newint[100];publicvoidcheck(int[]data,intlen);一般的用法是:check(arr,50);但如果要指定传...
1、int[] arr=new int[100];
public void check(int[] data,int len);
一般的用法是:check(arr,50);
但如果要指定传入的数组起始位置又该如何,
例如:
要将数组arr从arr[10]开始的位置传递给上述函数,是check(arr+10,50)吗?
在以上的情况下如何实现像C一样灵活使用,如:check(arr+10,20)这样可以作为指针一样操作。 展开
public void check(int[] data,int len);
一般的用法是:check(arr,50);
但如果要指定传入的数组起始位置又该如何,
例如:
要将数组arr从arr[10]开始的位置传递给上述函数,是check(arr+10,50)吗?
在以上的情况下如何实现像C一样灵活使用,如:check(arr+10,20)这样可以作为指针一样操作。 展开
3个回答
展开全部
c#和java都是禁用指针的(一定要用的时候C#可以用unsafe代码进行操作),但对于你的需求没看出有任何使用指针的必要,那个50的参数我不清楚是什么,如果只是代码数组长度那就是多余的,如果是别的用途要保留,你可以将位置做为一个单独的默认参数,形如
public void check(int[] data,int len,int pos=0)
这样你如果是check(arr,20)就是表示从0开始,如果是check(arr,20,10)就是从10开始
public void check(int[] data,int len,int pos=0)
这样你如果是check(arr,20)就是表示从0开始,如果是check(arr,20,10)就是从10开始
更多追问追答
追问
比方说要对数组中的部分数据进行校验计算,那你们是怎么处理的呢?是用arraylist吗,也就是说如何能将C/C++的关于指针的操作移植到C#上。
追答
arraylist除非有特殊原因否则一般不会再用,我不清楚你校验数据为什么会用到指针(如果你只是为了循环从数组中取数据那在C#中完全不需要,普通的for或者foreach就可了),也不清楚你的具体需求是什么,一般来象象泛型集合的List和Dictionary之类用的比较多点,如果有动态扩展的需求的话。
展开全部
下面的实例演示了如何传递数组给函数:
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();
}
}
}
当上面的代码被编译和执行时,它会产生下列结果:
平均值是: 214.4
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();
}
}
}
当上面的代码被编译和执行时,它会产生下列结果:
平均值是: 214.4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C#不可以,可以定义一个临时数组,将新数组赋值传递
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询