returnType FunctionName(paraType1 paraName1,paraType2 paraName2,……)
{
Function body;
}
其中的returnType是指方法的返回值,FunctionName指方法的标识符,paraType1指参数1的数据类型,paraName1是参数1的标识符,调用这种类型的方法的时候,必须传入与类型paraType1相符的参数值,并且传入的参数个数也必须相符,方法内部以参数名称paraName1来识别。
在C#中,参数一共四种形式:分别是
他们都有什么区别呢?具体怎么用呢?我们现在就开始具体的讲解,
值参数
2 //此处请注意,本方法使用了static关键字,原因是:根据我们类一所提到的,如果是实例方法(不加static关键字),
3 //必须通过类的对象来调用,即使在同一个类中,加入static关键字后,静态成员就属于类的引用范围了,
4 //因为在一个类中,所以不必类名.,在其他方法中直接就可以调用这个方法。对比下面的实例方法
5 static void Exchange(int a, int b)
6 {
7 Console .WriteLine ();
8 Console.WriteLine("值参数方法进来时,a={0} b={1}", a, b);
9 int c = 0;
10 c = a;
11 a = b;
12 b = c;
13 Console.WriteLine();
14 Console.WriteLine("经过值参数交换方法交换后,a={0} b={1}", a, b);
15 Console.WriteLine();
16
17 }
18 //看这个实例方法,对照上一个方法,看在main方法中的调用是不同的,
19 //此方法必须通过Class2的对象s.来调用,而上一个方法是直接调用(因为在一个类中,省略了类名.来调用)
20 void Exchange1()
21 {
22 }
23
24 static void Main()
25 {
26 //输入初值
27 Console.Write("请输入整数a=");
28 int a = int.Parse(Console .ReadLine());
29 //输入初值
30 Console.Write("请输入整数b=");
31 int b = int.Parse(Console.ReadLine());
32
33 //观察1:经过交换后a和b的结果的变化,(方法结束时交换了a和b的值)
34 //2:对比下面的调用,记住静态方法调用的方式
35 //3:在main方法结束前,我们再次打印main中定义的a和b的值的变化(和初值相同)
36 Exchange(a,b);
37
38
39 //对比上面的调用,记住实例方法调用的方式
40 Class2 s = new Class2();
41 s.Exchange1();
42
43 //因为是值参数的传递方法,不会改变Main方法中的a的值,结果应该和初值相同
44 Console.WriteLine("采用值参数交换方法后,Main方法中现在为a="+a);
45 Console.WriteLine();
46 //因为是值参数的传递方法,不会改变Main方法中的b的值,结果应该和初值相同
47 Console.WriteLine("经过值参数交换方法后,Main方法中现在为b=" + b);
48 }
49
50
51 }
2 {
3 //定义一个交换两个数的值的一个方法Exchange
4 //此处请注意,本方法使用了static关键字,原因是:根据我们类一所提到的,如果是实例方法(不加static关键字),
5 //必须通过类的对象来调用,即使在同一个类中,加入static关键字后,静态成员就属于类的引用范围了,
6 //因为在一个类中,所以不必类名.,在其他方法中直接就可以调用这个方法。对比下面的实例方法
7 static void Exchange(int a, ref int b)
8 {
9 Console .WriteLine ();
10 Console.WriteLine("参数进来时,a={0} b={1}", a, b);
11 int c = 0;
12 c = a;
13 a = b;
14 b = c;
15 Console.WriteLine();
16 Console.WriteLine("方法交换后,a={0} b={1}", a, b);
17 Console.WriteLine();
18
19 }
20 //看这个实例方法,对照上一个方法,看在main方法中的调用是不同的,
21 //此方法必须通过Class2的对象s.来调用,而上一个方法是直接调用(因为在一个类中,省略了类名.来调用)
22 void Exchange1()
23 {
24 }
25
26 static void Main()
27 {
28 //输入初值
29 Console.Write("请输入整数a=");
30 int a = int.Parse(Console .ReadLine());
31 //输入初值
32 Console.Write("请输入整数b=");
33 int b = int.Parse(Console.ReadLine());
34
35 //观察1:经过交换后a和b的结果的变化,(方法结束时交换了a和b的值)
36 //2:对比下面的调用,记住静态方法调用的方式
37 //3:main方法结束前,我们再次打印main中定义的a和b的值的变化:a和初值相同,b与出方法值相同
38 Exchange(a,ref b);
39
40
41 //对比上面的调用,记住实例方法调用的方式
42 Class2 s = new Class2();
43 s.Exchange1();
44
45 //因为是值参数的传递方法,不会改变Main方法中的a的值,结果应该和初值相同
46 Console.WriteLine("采用值参数传递交换方法后,结果应该和初值相同,Main方法中现在为a=" + a);
47 Console.WriteLine();
48 //因为是引用ref参数的传递方法,会改变Main方法中的b的值,结果应该和出方法时的值相同
49 Console.WriteLine("经过引用参数传递交换方法后,结果应该和出方法时的值相同,Main方法中现在为b=" + b);
50 }
51 }
2 {
3 //定义一个求正方形面积的方法,传入正方形的边长,返回正方形的面积
4 static void QMJ(double bc,out double mj)
5 {
6 mj = bc * bc;
7 }
8
9 //对比使用return返回面积的方法,达到的效果是一样的
10 static double returnQMJ(double bc)
11 {
12 return bc * bc;
13 }
14 static void Main()
15 {
16 Console.Write("请输入正方形的边长bc=");
17 double bc = double.Parse(Console.ReadLine());
18 Console.WriteLine();
19 //传入QMJ方法的mj是为赋初值的
20 double mj;
21
22 //通过方法调用,改变mj的值为出方法的值,打印出来,bc的值不变
23 QMJ(bc, out mj);
24 Console.WriteLine("正方形的面积mj="+mj);
25
26 Console.WriteLine("=================");
27 //使用return方式,返回方法的结果值
28 Console.WriteLine("使用returnQMJ方法面积mj="+returnQMJ(bc));
29 }
30 }
2 {
3 //定义一个静态的方法,参数是引用类型的数组参数a,
4 //方法内部的功能是,改变数值a中每个元素的值,让改变后的值是原来的2倍
5 static void ArrayMethod(int [] a)
6 {
7 Console.WriteLine("数值参数传入时,数组中的每个元素值是:");
8 foreach (int i in a)
9 {
10 Console.Write(i+" ");
11 }
12 Console.WriteLine();
13 //改变数值a中每个元素的值,让改变后的值是原来的2倍
14 for (int j = 0; j < a.Length; j++)
15 {
16 a[j] = a[j] * 2;
17 }
18 Console.WriteLine("改变后,方法内部的数组a中的每个元素值是:");
19 foreach (int i in a)
20 {
21 Console.Write(i + " ");
22 }
23 Console.WriteLine();
24 }
25
26 static void Main()
27 {
28 //给数值a赋初值
29 int[] a = new int[] {1,2,3 };
30
31 //调用方法将引用类型的数组参数a带入方法中
32 ArrayMethod(a);
33
34 //经过方法后引用类型的数组参数a的元素值应该发生改变,
35 Console.WriteLine("经过方法后,Main方法中数组a的每个元素值是:");
36 foreach (int i in a)
37 {
38 Console.Write(i + " ");
39 }
40 }
41 }
2 {
3 //定义一个静态的方法,参数是引用类型的数组参数a,采用动态传参方式,
4 //方法内部的功能是,改变数值a中每个元素的值,让改变后的值是原来的2倍
5 static void ArrayMethod(params int [] a)
6 {
7 Console.WriteLine("数值参数传入时,数组中的每个元素值是:");
8 foreach (int i in a)
9 {
10 Console.Write(i+" ");
11 }
12 Console.WriteLine();
13 //改变数值a中每个元素的值,让改变后的值是原来的2倍
14 for (int j = 0; j < a.Length; j++)
15 {
16 a[j] = a[j] * 2;
17 }
18 Console.WriteLine("改变后,方法内部的数组a中的每个元素值是:");
19 foreach (int i in a)
20 {
21 Console.Write(i + " ");
22 }
23 Console.WriteLine();
24 }
25
26 static void Main()
27 {
28 //使用了动态传参,我们可以不规定数组的大小,按照需要进行传入。
29 ArrayMethod(1,2,3,4);
30
31 /**/////给数值a赋初值
32 //int[] a = new int[] { 1, 2, 3 };
33
34 /**/////调用方法将引用类型的数组参数a带入方法中
35 //ArrayMethod(a);
36
37 //经过方法后引用类型的数组参数a的元素值应该发生改变,
38 //Console.WriteLine("经过方法后,Main方法中数组a的每个元素值是:");
39 //foreach (int i in a)
40 //{
41 // Console.Write(i + " ");
42 //}
43 }
44 }
2 {
3 //定义一个静态的方法,参数是引用类型的数组参数a,采用动态传参方式,
4 //方法内部的功能是,改变数值a中每个元素的值,让改变后的值是原来的2倍
5 static void ArrayMethod(int k,params int [] a)
6 {
7
8 Console.WriteLine("数值参数传入时,数组中的每个元素值是:");
9 foreach (int i in a)
10 {
11 Console.Write(i+" ");
12 }
13 Console.WriteLine("k="+k);
14 Console.WriteLine();
15 //改变数值a中每个元素的值,让改变后的值是原来的2倍
16 for (int j = 0; j < a.Length; j++)
17 {
18 a[j] = a[j] * 2;
19 }
20 Console.WriteLine("改变后,方法内部的数组a中的每个元素值是:");
21 foreach (int i in a)
22 {
23 Console.Write(i + " ");
24 }
25 Console.WriteLine("k="+ k);
26 Console.WriteLine();
27 }
28
29 static void Main()
30 {
31 //使用了动态传参,我们可以不规定数组的大小,按照需要进行传入。
32 //如果调用方法把parma参数写在前面,因为它的个数是不固定的,
33 //她会把最后一个值,也当成是数组中元素进行操作。
34 ArrayMethod(1,2,3,4);
35
36
37 }
38 }
-
c#接受c++动态数组指针
c#定义数组或向量传递指针参数,c++算法向数组指针输出参数数据
c++ c# 动态数组 -
C# 之值类型与引用类型参数[基础]
根据参数类型和传递方式,有以下4种不同的情况:值类型参数的按值传pro CodeHighlighter (freeware...
C# DotNet 基础 引用类型 值类型 -
C# 方法参数
说明可变参数的使用及定义、方法重载的前提
方法重载、可变参数 -
c# 参数 this
文字:MSDN---扩展方法(C# 编程指南)扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。它们的第一个参数指定该方法作用于哪个类型,并
扩展方法 命名空间 实例方法 编程指南 程序集
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M