C#里如何给函数传数组类型的值

C#里如何给函数传数组类型的值例如:voidfunc(double[]vect){....}voidmain(){double[,]particle=newdouble[... C#里如何给函数传数组类型的值 例如:
void func(double []vect)
{ .... }
void main()
{
double[,]particle=new double [3,3];
int i;
double []value=new double[3];
for(i=0;i<3;i++)
value[i]=func(particle[i]);
}
是double func(double []vect),我写错了,func(particle[i])会报错,说是参数不匹配,c#的检错好像和C的不一样
我是想把一个二维数组中的一维数组当作个参数传给func函数
展开
 我来答
沫沫容
推荐于2016-03-22 · 知道合伙人教育行家
沫沫容
知道合伙人教育行家
采纳数:7299 获赞数:44206
2010年毕业,英语六级水平,擅长写作、翻译、同义句转换、完形填空、阅读理解等一系列题型及相关考试。

向TA提问 私信TA
展开全部
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace ConsoleApplication1
7 {
8 class Program
9 {
10 /* 先来了解一下什么是实参, 什么是形参.
11 所谓形参其实也就是说函数定义的时候所带的参数. 比如 static void Myfuntion(int i , int t) 其中 int i and int t 都是形参.
12 * 而实参呢? 实参代表的是将要传入函数里面进行运算的两个参数, 可以是变量,也可以是常量.只要与形参类型相同即可*/
13
14 // 函数分为传值与传址两种方式. 传值不影响实参的数据,传址则会影响实参的数据. 下面用几段代码来示例
15 //在使用传值或者传址的选择上应当遵循这样一个规则.
16 //1. 传值是将形参的内容复制一份给实参.
17 //2. 传址是将形参与实参同时指向一个地址.
18 //如果在数据较大的情况下使用传值的方式必然会影响程序性能, 所以当数据较大时可以使用传址的方式.使用传址的方式会让程序的效率大大提升.
19 static void Myfuntion(int i , int t) //这个函数将以传值的方式运行
20 {
21 if (i > t)
22 i += 5;
23 else
24 t += 5;
25 }
26
27 static void Myfuntion1(ref int i, ref int t) // 这个函数将会以传址的方式进行运算. 因为前面加了ref关键字, 函数只要加了ref关键字就会是以传址的方式进行运算
28 {
29 if (i > t)
30 i += 5;
31 else
32 t += 5;
33 }
34
35 static void Myfuntion2(int[] array) //这里注意, 这个函数没有带ref关键字, 但是也是以传址的方式进行运算. 因为在C#中,引用类型都是以传址的方式进行运算,而array属于数组, 数组又属于引用类型,所以....
36 {
37 for (int i = 0; i < array.Length; i++)
38 {
39 array[i] = 40;
40 }
41 }
42
43 static void Myfuntion3 (int i , int t , out int s) //这个函数虽然返回值为Void(代表没有返回值) , 其实有返回值 因为我们加了一个新的关键字, out , 这个关键字能够将 s 单独返回. 同样out关键字也是以传址的方式进行运算的. 还有,out 参数可以不用赋值,即使你赋值了也会被忽略
44 {
45 s = 50;
46 if (i > t)
47 i += 5;
48 else
49 t += 5;
50 }
百度网友98bf1ae
2010-12-27 · TA获得超过217个赞
知道答主
回答量:57
采纳率:100%
帮助的人:69.4万
展开全部
楼主,你是想把一个数组传递到函数func中,还是想把一个数组元素的值传到函数func中?
如果你是想把二维数组particle传到func中的话这样做:
void func(double[,] vect)
{....}
void main()
{
double[,] particle=new double [3,3];
int i;
double[] value=new double[3];
for(i=0;i<3;i++)
{
value[i]=func(particle);
}
}
你把数组名传进去就行了。要注意,实参和形参的数据类型要保持一致。
你原来写的,value[i]=func(particle[i]); particle[i]只是一个数组元素,而形参是个一维数组。这样是不行的。如果你想传一个数组元素的值,那你func函数中的形参要和被传的数组元素的类型一致。希望能帮到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
23...5@qq.com
2010-12-27 · TA获得超过141个赞
知道答主
回答量:136
采纳率:0%
帮助的人:145万
展开全部
这样调用对啊,不过func没有返回值,所以value[i]=func(particle[i]); 这样应该会报错的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-28
展开全部
Class c
{
public void demo(params int[] i){}
static Main()
{
c n=new c();
int[] luo=new int[3]{1,2,3};
n.demo(luo);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sk900218
2010-12-28 · 超过10用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:46.7万
展开全部
= =他们都说了,我没得说了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式