📅  最后修改于: 2023-12-03 15:00:15.969000             🧑  作者: Mango
在 C# 中,方法参数是一种用于传递值或引用类型数据的机制。方法参数可以传递单个值或者多个值,它们是方法调用的一部分,用于向方法传递数据。在 C# 中,方法参数分为值类型参数和引用类型参数。
值类型参数是一种传递值类型数据的机制。当一个值类型参数被传递给一个方法时,该方法会得到该参数的一个拷贝,而不是该参数本身。这意味着如果该参数在方法内部被修改,那么该参数原来的值不会发生变化。
以下是一个使用值类型参数的例子:
public void AddNumbers(int a, int b)
{
int sum = a + b;
Console.WriteLine(sum);
}
在上面的代码中,AddNumbers
方法使用两个 int
类型的参数 a
和 b
,并将它们的和输出到控制台。由于 int
是一个值类型,AddNumbers
方法获得的是 a
和 b
的拷贝。
引用类型参数是一种传递引用类型数据的机制。当一个引用类型参数被传递给一个方法时,该方法会得到该参数所引用的对象的一个引用,而不是对象本身。这意味着如果该参数在方法内部被修改,那么该参数所引用的对象的值也会发生变化。
以下是一个使用引用类型参数的例子:
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
方法时,使用按值传递方式传递了 x
和 y
参数的值。由于 int
是一个值类型,所以 AddNumbers
方法获得的是 x
和 y
的拷贝。
按引用传递是一种将参数引用作为方法参数传递的方式。对于值类型参数,按引用传递传递的是参数的引用;对于引用类型参数,按引用传递传递的是参数所引用的对象的引用。在这种方式下,如果参数在方法内部被修改,那么原参数所引用的对象的值也会发生变化。
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# 中,方法参数分为值类型参数和引用类型参数。值类型参数传递的是参数的拷贝,而引用类型参数传递的是参数所引用对象的引用。在传递参数时,可以使用按值传递、按引用传递和输出参数等方式。