📜  C#|方法参数(1)

📅  最后修改于: 2023-12-03 15:00:15.969000             🧑  作者: Mango

C# | 方法参数

概述

在 C# 中,方法参数是一种用于传递值或引用类型数据的机制。方法参数可以传递单个值或者多个值,它们是方法调用的一部分,用于向方法传递数据。在 C# 中,方法参数分为值类型参数和引用类型参数。

值类型参数

值类型参数是一种传递值类型数据的机制。当一个值类型参数被传递给一个方法时,该方法会得到该参数的一个拷贝,而不是该参数本身。这意味着如果该参数在方法内部被修改,那么该参数原来的值不会发生变化。

以下是一个使用值类型参数的例子:

public void AddNumbers(int a, int b)
{
    int sum = a + b;
    Console.WriteLine(sum);
}

在上面的代码中,AddNumbers 方法使用两个 int 类型的参数 ab,并将它们的和输出到控制台。由于 int 是一个值类型,AddNumbers 方法获得的是 ab 的拷贝。

引用类型参数

引用类型参数是一种传递引用类型数据的机制。当一个引用类型参数被传递给一个方法时,该方法会得到该参数所引用的对象的一个引用,而不是对象本身。这意味着如果该参数在方法内部被修改,那么该参数所引用的对象的值也会发生变化。

以下是一个使用引用类型参数的例子:

public void UpdateList(List<string> list)
{
    list.Add("new item");
}

List<string> myList = new List<string>() { "item 1", "item 2", "item 3" };
UpdateList(myList);

在上面的代码中,UpdateList 方法使用一个 List<string> 类型的参数 list,并向该列表添加了一个新的字符串元素。由于 List<string> 是一个引用类型,UpdateList 方法获取的是 myList 参数的引用。

最后输出 myList 的内容,可以看到该列表发生了变化:

foreach (string item in myList)
{
    Console.WriteLine(item);
}
// output: item 1
//         item 2
//         item 3
//         new item
传递参数

调用一个方法时,需要将该方法的参数传递给它。在 C# 中,有多种传递参数的方式。

按值传递

按值传递是一种将参数值作为方法参数传递的方式。对于值类型参数,按值传递传递的是参数的拷贝;对于引用类型参数,按值传递传递的是参数所引用对象的一个拷贝。在这种方式下,如果参数在方法内部被修改,那么原参数值不会发生变化。

int x = 10;
int y = 20;
AddNumbers(x, y);

在上面的代码中,调用 AddNumbers 方法时,使用按值传递方式传递了 xy 参数的值。由于 int 是一个值类型,所以 AddNumbers 方法获得的是 xy 的拷贝。

按引用传递

按引用传递是一种将参数引用作为方法参数传递的方式。对于值类型参数,按引用传递传递的是参数的引用;对于引用类型参数,按引用传递传递的是参数所引用的对象的引用。在这种方式下,如果参数在方法内部被修改,那么原参数所引用的对象的值也会发生变化。

List<string> myList = new List<string>() { "item 1", "item 2", "item 3" };
UpdateList(ref myList);

在上面的代码中,调用 UpdateList 方法时,使用按引用传递方式传递了 myList 参数的引用。由于 List<string> 是一个引用类型,所以 UpdateList 方法获取的是 myList 参数的引用。为了明确使用按引用传递方式,需要在 UpdateList 方法定义时使用 ref 关键字。

输出参数

输出参数是一种将方法的结果返回给调用者的方式。在 C# 中,使用 out 关键字定义输出参数。输出参数必须在方法中被赋值,并且在方法调用结束后向调用者返回。在方法调用时,输出参数必须在参数列表中排在普通参数之后。

以下是一个使用输出参数的例子:

public void GetNumber(out int number)
{
    number = 42;
}

int result;
GetNumber(out result);

在上面的代码中,GetNumber 方法使用一个 out 关键字定义的输出参数 number,并将值 42 赋给该参数。调用 GetNumber 方法时,必须使用 out 关键字将 result 参数标识为输出参数。

总结

方法参数是一种用于传递值或引用类型数据的机制。在 C# 中,方法参数分为值类型参数和引用类型参数。值类型参数传递的是参数的拷贝,而引用类型参数传递的是参数所引用对象的引用。在传递参数时,可以使用按值传递、按引用传递和输出参数等方式。