C#输入参数会被方法修改
时间: 2023-08-04 11:34:30 浏览: 197
AOP修改方法的参数
4星 · 用户满意度95%
在C#中,当使用引用类型作为方法的输入参数时,如果在方法内部修改了该参数的值,则该参数的值在方法结束后会发生改变。这是因为引用类型作为参数时,传递的是该引用类型所在的内存地址,方法内部对该对象的修改实际上是在同一个内存地址上进行的,因此会影响到方法外部该对象的值。
例如,以下代码演示了一个方法修改引用类型参数的值:
```csharp
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int> { 1, 2, 3 };
ChangeList(list);
Console.WriteLine(string.Join(",", list)); // 输出:4,5,6
}
static void ChangeList(List<int> list)
{
for (int i = 0; i < list.Count; i++)
{
list[i] += 3;
}
}
}
```
在上面的例子中,定义了一个List<int>类型的变量list,并将其传递给ChangeList方法。在ChangeList方法内部,对list中的每个元素都加上了3。由于List<int>是一个引用类型,因此在方法结束后,list的值也会发生改变,输出结果为4,5,6。
需要注意的是,在C#中,当使用值类型作为方法的输入参数时,如果在方法内部修改了该参数的值,该参数的值在方法结束后不会发生改变,因为值类型作为参数时,传递的是该值类型的副本,方法内部对该副本进行的修改不会影响到方法外部该值类型的值。
阅读全文