c#形参
时间: 2025-03-20 17:00:52 浏览: 28
### C# 中形参的概念与使用方法
#### 一、形参的基本概念
在 C# 编程中,当定义一个方法时,用于接收外部传入数据的变量被称为 **形式参数** 或者简称 **形参**。这些形参仅在方法体内有效,并且只会在方法被调用时分配内存空间[^5]。
形参的作用是在方法内部表示由外界传递过来的具体数值或对象引用。例如:
```csharp
public static void PrintSum(int x, int y)
{
Console.WriteLine(x + y);
}
```
在此例子中,`x` 和 `y` 是形参,它们用来接受调用方提供的具体值。
---
#### 二、形参的类型分类
C# 支持多种方式来声明形参,主要分为以下几种类型:
1. **按值传递 (Value Passing)**
默认情况下,C# 方法中的形参会按照值进行传递。这意味着实参的实际值会复制到形参中,任何对形参的操作都不会影响原始实参的值。
```csharp
public static void ModifyValue(int number)
{
number = 100;
}
```
如果调用上述方法并传递一个整数,则该整数本身不会受到影响[^3]。
2. **按引用传递 (`ref`)**
当使用关键字 `ref` 修饰形参时,意味着将实参的地址而非其值传递给方法。这样做的结果是,方法内的修改会影响到原实参的内容。
```csharp
public static void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
// 调用示例
int first = 5, second = 10;
Swap(ref first, ref second);
Console.WriteLine($"first={first}, second={second}");
```
上述代码展示了如何通过 `ref` 关键字交换两个变量的值[^2]。
3. **输出参数 (`out`)**
使用 `out` 参数允许方法返回多个值。需要注意的是,对于标记为 `out` 的形参,在离开方法之前必须为其赋值。
```csharp
public static void Divide(out double quotient, out double remainder, double dividend, double divisor)
{
quotient = Math.Floor(dividend / divisor);
remainder = dividend % divisor;
}
```
4. **可选参数 (Optional Parameters)**
可以为某些形参指定默认值,从而使得调用时不强制提供对应实参。
```csharp
public static string Greet(string name = "Guest")
{
return $"Hello, {name}!";
}
```
5. **动态参数 (`params`)**
动态数组参数可以让开发者一次性传入任意数量相同类型的元素作为单一维度数组处理。
```csharp
public static double Average(params double[] numbers)
{
if (numbers.Length == 0) return 0;
double sum = 0;
foreach (double d in numbers)
sum += d;
return sum / numbers.Length;
}
```
---
#### 三、注意事项
- 形参的数量、类型以及顺序需与实际参数保持一致;否则编译器可能会报错提示“无法解析重载的方法”或者“类型不匹配”。
- 对于基本数据类型而言,默认采用值传递机制;而对于复杂结构比如类实例来说,默认行为则是引用传递——尽管如此,这并不等于直接操作源对象本身,而是操纵指向它的副本。[^4]
---
###
阅读全文
相关推荐

















