在C#编程语言中,方法是执行特定任务的代码块。方法可以有参数,这些参数提供了方法需要操作的值。方法也可以有返回值,这是方法执行的结果。
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类。
方法的格式
<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body
}
方法的各个元素:
当定义一个方法时,从根本上说是在声明它的结构的元素。
- Access Specifier:访问修饰符,这个决定了变量或方法对于另一个类的可见性。
- Return type:返回类型,一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为 void。
- Method name:方法名称,是一个唯一的标识符,且是大小写敏感的。它不能与类中声明的其他标识符相同。
- Parameter list:参数列表,使用圆括号括起来,该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。
- Method body:方法主体,包含了完成任务所需的指令集。
定义方法
定义一个函数 FindMax,它接受两个整数值,并返回两个中的较大值。它有 public 访问修饰符,所以它可以使用类的实例从类的外部进行访问。
class NumberManipulator
{
public int FindMax(int num1, int num2)
{
/* 局部变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
...
}
一般调用方法
完整代码示例1:
using System;
using System.Collections.Generic;
namespace MethodUse1
{
internal class Program
{
static void Main(string[] args)
{
/* 局部变量定义 */
int a = 100;
int b = 200;
int ret;
NumberManipulator n = new NumberManipulator();
//调用 FindMax 方法
ret = n.FindMax(a, b);
Console.WriteLine("最大值是: {0}", ret);
}
}
class NumberManipulator
{
public int FindMax(int num1, int num2)
{
/* 局部变量声明 */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
}
使用类的实例从另一个类中调用其他类的公有方法。例如,方法 FindMax 属于 NumberManipulator 类,您可以从另一个类 Test 中调用它。
完整代码示例2:
using System;
using System.Collections.Generic;
namespace MethodUse3
{
internal class Program
{
static void Main(string[] args)
{
ClassA classAInstance = new ClassA();
classAInstance.CallPublicMethodInClassB(); // 这将调用ClassB的公有方法并打印出"Public method in ClassB."
}
}
// 类A
public class ClassA
{
public void CallPublicMethodInClassB()
{
// 创建ClassB的实例
ClassB classBInstance = new ClassB();
// 调用ClassB的公有方法
classBInstance.PublicMethod();
}
}
// 类B
public class ClassB
{
public void PublicMethod()
{
Console.WriteLine("Public method in ClassB.");
}
}
}
递归方法调用
一个方法可以自我调用。这就是递归。
模拟场景:
请使用递归函数计算数的阶乘。给定数字(6,7,8,9)。
完整示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MethodUse4
{
internal class Program
{
static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();//Number Manipulator操作数字
//调用 factorial 方法
Console.WriteLine("6 的阶乘是: {0}", n.factorial(6));
Console.WriteLine("7 的阶乘是: {0}", n.factorial(7));
Console.WriteLine("8 的阶乘是: {0}", n.factorial(8));
Console.WriteLine("9 的阶乘是: {0}", n.factorial(9));
}
}
class NumberManipulator
{
public int factorial(int num)//factorial阶乘
{
/* 局部变量定义 */
int result;
if (num == 1)
{
return 1;
}
else
{
result = factorial(num - 1) * num;
return result;
}
}
}
}