当前位置:实例文章 » C#开发实例» [文章]C#常见技能_参数传递

C#常见技能_参数传递

发布人:shili8 发布时间:2025-02-26 18:55 阅读次数:0

**C# 常见技能 - 参数传递**

在 C# 中,函数可以接收多种类型的参数,包括值类型、引用类型等。理解如何传递这些参数至关重要,以便编写高效且易于维护的代码。

###1. 值类型参数值类型参数是通过值传递给函数的,这意味着在函数内部创建了一个副本,而不是直接操作原始值。

csharppublic class Program{
 public static void PrintValue(int value)
 {
 // 在函数内部,value 是一个副本 Console.WriteLine($"函数内:{value}");
 }

 public static void Main()
 {
 int originalValue =10;
 Console.WriteLine($"原值:{originalValue}");

 PrintValue(originalValue);

 Console.WriteLine($"原值(未改变):{originalValue}");
 }
}


在上述示例中,`PrintValue` 函数接收一个 `int` 值类型参数。由于是通过值传递的,所以函数内部操作的是副本,而不是原始值。

###2. 引用类型参数引用类型参数(如类、数组等)是通过引用传递给函数的,这意味着函数可以直接修改这些对象。

csharppublic class Program{
 public static void PrintReference(Person person)
 {
 // 在函数内部,person 是一个引用 Console.WriteLine($"函数内:{person.Name} {person.Age}");
 }

 public class Person {
 public string Name { get; set; }
 public int Age { get; set; }
 }

 public static void Main()
 {
 Person originalPerson = new Person { Name = "John", Age =30 };
 Console.WriteLine($"原值:{originalPerson.Name} {originalPerson.Age}");

 PrintReference(originalPerson);

 // 修改引用类型参数 person.Name = "Jane";
 Console.WriteLine($"修改后原值:{originalPerson.Name} {originalPerson.Age}");
 }
}


在上述示例中,`PrintReference` 函数接收一个 `Person` 引用类型参数。由于是通过引用传递的,所以函数内部可以直接修改这些对象。

###3. out 参数out 参数是一种特殊类型的参数,它必须在函数调用时赋值,并且不能在函数内部重新赋值。

csharppublic class Program{
 public static void GetMaxValue(int a, int b, out int maxValue)
 {
 // 在函数内部,maxValue 是一个out参数 maxValue = Math.Max(a, b);
 }

 public static void Main()
 {
 int originalA =10;
 int originalB =20;

 Console.WriteLine($"原值:{originalA} {originalB}");

 GetMaxValue(originalA, originalB, out int maxValue);

 Console.WriteLine($"函数内maxValue:{maxValue}");
 }
}


在上述示例中,`GetMaxValue` 函数接收两个 `int` 值类型参数和一个 `out int` 参数。由于是通过值传递的,所以函数内部操作的是副本,而不是原始值。

###4. ref 参数ref 参数是一种特殊类型的参数,它必须在函数调用时赋值,并且可以在函数内部重新赋值。

csharppublic class Program{
 public static void GetMaxValue(ref int a, ref int b)
 {
 // 在函数内部,a和b是ref参数 if (a > b)
 {
 a = Math.Max(a, b);
 }
 else {
 b = Math.Max(a, b);
 }
 }

 public static void Main()
 {
 int originalA =10;
 int originalB =20;

 Console.WriteLine($"原值:{originalA} {originalB}");

 GetMaxValue(ref originalA, ref originalB);

 Console.WriteLine($"函数内maxValue:{Math.Max(originalA, originalB)}");
 }
}


在上述示例中,`GetMaxValue` 函数接收两个 `int` 值类型参数,并且使用 `ref` 关键字来指定它们是 ref 参数。由于是通过引用传递的,所以函数内部可以直接修改这些对象。

###5. params 参数params 参数是一种特殊类型的参数,它允许在函数调用时传递多个值。

csharppublic class Program{
 public static void PrintValues(params int[] values)
 {
 // 在函数内部,values是一个数组 foreach (int value in values)
 {
 Console.WriteLine(value);
 }
 }

 public static void Main()
 {
 PrintValues(10,20,30);

 PrintValues(new int[] {40,50,60 });
 }
}


在上述示例中,`PrintValues` 函数接收一个 `params int[]` 参数。由于是通过值传递的,所以函数内部操作的是副本,而不是原始值。

### 总结C# 中有多种类型的参数传递方式,包括值类型、引用类型、out 参数、ref 参数和params 参数等。理解这些概念可以帮助你编写高效且易于维护的代码。

相关标签:c#开发语言
其他信息

其他资源

Top