C#方法的声明和使用(附带实例)
C# 中的方法是用来定义类可执行的操作,它是包含一系列语句的代码块。从本质上讲,方法就是和类相关联的动作。
声明方法的基本格式如下:
一个方法的名称和参数列表定义了该方法的签名,具体地讲,一个方法的签名由它的名称及参数的个数、修饰符和类型组成。返回值类型不是方法签名的组成部分,参数的名称也不是方法签名的组成部分。
例如,定义一个 ShowGoods() 方法,用来输出库存商品的信息,代码如下:
如果定义的方法有返回值,则必须使用 return 关键字返回一个指定类型的数据。例如,定义一个返回值类型为 int 的方法,就必须使用 return 返回一个 int 类型的值,代码如下:

图 1 方法无返回值的错误提示
C# 中方法的参数主要有 4 种,分别为值参数、ref 参数、out 参数和 params 参数,下面分别进行讲解。
当使用值参数的方法被调用时,编译器为形参分配存储单元,然后将对应的实参的值复制到形参中,由于是值类型的传递方式。所以,在方法中对值类型的形参的修改并不会影响实参。
如果要使用 ref 参数,则方法声明和方法调用都必须显式使用 ref 关键字。
如果要使用 out 参数,则方法声明和方法调用都必须显式使用 out 关键字。
params 参数是一个一维数组,主要用来指定在参数数目可变时所采用的方法参数。
【实例】不同类型参数方法的使用。创建一个控制台应用程序,定义 4 个 Add 方法,用来计算整型数据的和,这 4 个方法中分别使用值参数、ref 参数、out 参数和 params 参数,然后在 Main() 方法中调用这 4 个方法,比较它们的运算结果。代码如下:
C#方法的声明
方法在类或结构中声明,声明时需要指定访问级别、返回值、方法名称及方法参数,方法参数放在括号中,并用逗号隔开。括号中没有内容表示声明的方法没有参数。声明方法的基本格式如下:
修饰符 返回值类型 方法名称(参数列表) { //方法的具体实现; }
- “修饰符”可以是 private、public、protected、internal 这 4 个中的任意一个;
- “返回值类型”指定方法返回数据的类型,可以是任何类型,如果方法不需要返回一个值,则使用 void 关键字;
- “参数列表”是用逗号分隔的类型、标识符,如果方法中没有参数,则“参数列表”为空。
一个方法的名称和参数列表定义了该方法的签名,具体地讲,一个方法的签名由它的名称及参数的个数、修饰符和类型组成。返回值类型不是方法签名的组成部分,参数的名称也不是方法签名的组成部分。
例如,定义一个 ShowGoods() 方法,用来输出库存商品的信息,代码如下:
public void ShowGoods() { Console.WriteLine("库存商品名称: "); Console.WriteLine(FullName); }
注意,方法的定义必须在某个类中,定义方法时如果没有声明访问修饰符,方法的默认访问权限为 private。
如果定义的方法有返回值,则必须使用 return 关键字返回一个指定类型的数据。例如,定义一个返回值类型为 int 的方法,就必须使用 return 返回一个 int 类型的值,代码如下:
public int ShowGoods() { Console.WriteLine("商品信息"); return 1; }在上面的代码中,如果将“return 1;”删除,就会出现如下图所示的错误提示:

图 1 方法无返回值的错误提示
C#方法的参数
调用方法时可以给该方法传递一个或多个值,传给方法的值叫作实参,在方法内部,接收实参的变量叫作形参,形参在紧跟着方法名称的括号中声明,形参的声明语法与变量的声明语法一样。形参只在方法内部有效。C# 中方法的参数主要有 4 种,分别为值参数、ref 参数、out 参数和 params 参数,下面分别进行讲解。
1) 值参数
值参数就是在声明时不加修饰的参数,它表明实参与形参之间按值传递。当使用值参数的方法被调用时,编译器为形参分配存储单元,然后将对应的实参的值复制到形参中,由于是值类型的传递方式。所以,在方法中对值类型的形参的修改并不会影响实参。
2) ref参数
ref 参数使形参按引用传递(即使形参是值类型),其效果是:在方法中对形参所做的任何更改都将反映在实参中。如果要使用 ref 参数,则方法声明和方法调用都必须显式使用 ref 关键字。
3) out参数
out 关键字用来定义输出参数,它会导致参数通过引用来传递,这与 ref 关键字类似,不同之处在于:ref要求变量必须在传递之前进行赋值,而使用 out 关键字定义的参数,不用进行赋值即可使用。如果要使用 out 参数,则方法声明和方法调用都必须显式使用 out 关键字。
4) params参数
在声明方法时,如果有多个相同类型的参数,可以定义为 params 参数。params 参数是一个一维数组,主要用来指定在参数数目可变时所采用的方法参数。
【实例】不同类型参数方法的使用。创建一个控制台应用程序,定义 4 个 Add 方法,用来计算整型数据的和,这 4 个方法中分别使用值参数、ref 参数、out 参数和 params 参数,然后在 Main() 方法中调用这 4 个方法,比较它们的运算结果。代码如下:
class Program { private int Add(int x, int y) // 值参数 { x = x + y; return x; } private int Add(ref int x, int y) // ref参数 { x = x + y; return x; } private int Add(int x, int y, out int z) // out参数 { z = x + y; return z; } private int Add(params int[] x) // params参数 { int result = 0; for (int i = 0; i < x.Length; i++) { result += x[i]; } return result; } static void Main(string[] args) { Program pro = new Program(); int x = 30; int y = 40; int z; int result; Console.WriteLine("值参数的使用: " + pro.Add(x, y)); Console.WriteLine("值参数中实参x的值: " + x); Console.WriteLine("ref参数的使用: " + pro.Add(ref x, y)); Console.WriteLine("ref参数中实参x的值: " + x); Console.WriteLine("out参数的使用: " + pro.Add(x, y, out z)); Console.WriteLine("params参数的使用: " + pro.Add(20, 30, 40, 50, 60)); Console.ReadLine(); } }程序运行结果为:
值参数的使用: 70
值参数中实参x的值: 30
ref参数的使用: 70
ref参数中实参x的值: 70
out参数的使用: 110
params参数的使用: 200