C# 值参数/引用参数/输出参数

  • A+
所属分类:.NET技术
摘要

值参数1、在栈中为形参分配空间2、复制实参到形参 上面的输出结果是10–5

值参数

1、在栈中为形参分配空间

2、复制实参到形参

 1       public class Person  2       {  3           public int age = 10;  4       }  5          static void Main(string[] args)  6         {  7             int a2= 10;  8             Person a1= new Person();  9  10             Console.WriteLine(a1.age + "--" + a2); 11             SetParam(a1, a2); 12             Console.WriteLine(a1.age + "--" + a2); 13             Console.ReadLine(); 14         } 15         static void SetParam(Person f1, int f2) 16         { 17             f1.age = f1.age + 5; 18             f2 = f2 + 5; 19         }     

 

上面的输出结果是

10--5

15--5

C# 值参数/引用参数/输出参数

引用参数

1、使用引用参数时,必须在方法的声明和调用中都使用ref修饰符。

2、实参必须是变量,在用作实参前必须被赋值,如果是引用类型的变量,可以赋值为一个引用或null值。

3、不在栈中为形参分配新的内存。

4、形参名称相当于实参变量的别名,引用与实参相同的内存位置。

 1         public class Person  2         {  3             public int age = 10;  4         }  5         static void Main(string[] args)  6         {  7             int a2 = 5;  8             Person a1 = new Person();  9  10             Console.WriteLine(a1.age + "--" + a2); 11             SetParam(ref a1,ref  a2); 12             Console.WriteLine(a1.age + "--" + a2); 13        14             Console.ReadLine(); 15  16  17         } 18  19         static void SetParam(ref Person f1,ref int f2) 20         { 21             f1.age = f1.age + 5; 22             f2 = f2 + 5; 23         }

上面的输出结果是

10--5

15--10

C# 值参数/引用参数/输出参数

输出参数

1、必须在声明的调用中都是用修饰符。输出参数的修饰符是out而不是ref。

2、实参不许是变量,不能是其他表达式类型。

3、在方法内部,输出参数在被读取之前必须被赋值。这意味着参数的初始值是无关的,而且没有必要在方法调用前为实参赋值。

4、每个输出参数在方法返回之前必须被赋值

 1         public class Person  2         {  3             public int age = 10;  4         }  5         static void Main(string[] args)  6         {  7             Person a1 = null;  8             int a2;  9  10             OutParam(out a1,out  a2); 11             Console.WriteLine(a1.age + "--" + a2); 12             Console.ReadLine(); 13         } 14  15         static void OutParam(out Person f1, out int f2) 16         { 17             f1 = new Person(); 18             f1.age = 25; 19             f2 = 15; 20         }

 

上面的输出结果是

25--15

 

C# 值参数/引用参数/输出参数