文章目录
- 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;
}
//递归方法:factorial
public 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();
}
}
}