文章目录
- C# 方法(函数)
- 简单示例
- 程序代码
- 运行效果
- 值传递和引用传递
- 示例程序
- 运行效果
- 按输出传递参数
- 运行结果
C# 方法(函数)
简单示例
程序代码
访问的限制符
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Test{public int getPublicSumAge(int a,int b){int c;c = a + b;return c;}private int getPrivateSumAge(int a, int b){int c;c =( a + b ) * 10;return c;}//递归方法:factorialpublic int factorial(int num){/* 局部变量定义 */int result;if (num == 1){return 1;}else{result = factorial(num - 1) * num;return result;}}static void Main(string[] args){int age;Test test = new Test();age = test.getPublicSumAge(12, 8);Console.WriteLine("SumAgePublic:" + age);//Console.ReadLine();age = test.getPrivateSumAge(12, 8);Console.WriteLine("SumAgePrivate:" + age);Console.WriteLine("6 的阶乘是: {0}", test.factorial(6));Console.ReadLine();}}
}
运行效果
值传递和引用传递
示例程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Test{//转换函数(值传递)public void swapValue(int x,int y){int temp;temp = x; /* 保存 x 的值 */x = y; /* 把 y 赋值给 x */y = temp; /* 把 temp 赋值给 y */}//转换函数(引用传递)public void swapRef(ref int x,ref int y){int temp;temp = x; /* 保存 x 的值 */x = y; /* 把 y 赋值给 x */y = temp; /* 把 temp 赋值给 y */}static void Main(string[] args){Test test = new Test();int a1 = 100;int b1 = 200;Console.WriteLine("在交换之前,a1 的值: {0}", a1);Console.WriteLine("在交换之前,b1 的值: {0}", b1);/* 调用函数来交换值 */test.swapValue(a1, b1);Console.WriteLine("在交换之后,a1 的值: {0}", a1);Console.WriteLine("在交换之后,b1 的值: {0}", b1);/* 局部变量定义 */int a2 = 300;int b2 = 400;Console.WriteLine("在交换之前,a2 的值: {0}", a2);Console.WriteLine("在交换之前,b2 的值: {0}", b2);/* 调用函数来交换值 */test.swapRef(ref a2, ref b2);Console.WriteLine("在交换之后,a2 的值: {0}", a2);Console.WriteLine("在交换之后,b2 的值: {0}", b2);Console.ReadLine();}}
}
运行效果
按输出传递参数
return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回两个值。输出参数会把方法输出的数据赋给自己,其他方面与引用参数相似。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Test{public void getValue(out int x){int temp = 5;x = temp;}static void Main(string[] args){Test test = new Test();/* 局部变量定义 */int a = 100;Console.WriteLine("方法调用之前,a的值:{0}", a);test.getValue(out a);Console.WriteLine("方法调用之后,a的值:{0}", a);Console.ReadLine();}}
}
提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用。请看下面的实例,来理解这一点:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Test{public void getValues(out int x, out int y){Console.WriteLine("请输入第一个值: ");x = Convert.ToInt32(Console.ReadLine());Console.WriteLine("请输入第二个值: ");y = Convert.ToInt32(Console.ReadLine());}static void Main(string[] args){Test test = new Test();/* 局部变量定义 */int b, c;/* 调用函数来获取值 */test.getValues(out b, out c);Console.WriteLine("在方法调用之后,b 的值: {0}", b);Console.WriteLine("在方法调用之后,c 的值: {0}", c);Console.ReadLine();}}
}