C#方法中参数有三种传递方式:值参数、引用参数、输出参数。
1.值参数:复制实参的值,重新创建新的存储位置,形参变化不会造成实参变化。
2.引用参数:复制实参的引用给形参,形参和实参指向同一个内存位置,形参变化会造成实参变化。在C#中,使用ref关键字声明引用参数。
3.输出参数:和引用参数相似,实参和形参指向同一个内存位置,形参变化会造成实参变化。输出参数的作用主要是为函数中返回多个返回值,输出参数会把方法输出的数据赋予自身。在C#中,使用out关键字声明输出参数。
引用参数和输出参数的不同:
引用参数在调用方法前必须初始化,否则编译器会报错,即传递前变量(实参)必须初始化。而输出参数则不同,在调用方法前参数不用初始化,但是在方法内部参数(形参)必须初始化,否则编译器会报错。
三种方式源代码展示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestArgsTransform
{
class Program
{
static void Main(string[] args)
{
int x1 = 10;
int y1 = 20;
int x, y;
Console.WriteLine("原先x:{0},y:{1}", x1, y1);
Console.WriteLine
("x:{0},y:{1}", x1, y1);
Program program = new Program();
//值传递
program.swapByValue(x1, y1);
Console.Write("值传递:");
Console.WriteLine
("x:{0},y:{1}", x1, y1);
//引用参数
x1 = 10;
y1 = 20;
program.swapByQuote(ref x1, ref y1);
Console.Write("引用参数:");
Console.WriteLine
("x:{0},y:{1}", x1, y1);
//输出参数
x1 = 10;
y1 = 20;
program.swapByOut(x1, y1, out x, out y);
Console.Write("输出参数:");
Console.WriteLine
("x:{0},y:{1}", x, y);
Console.ReadKey();
}
void swapByValue( int x , int y)
{
int temp = x;
x = y;
y = temp;
}
void swapByQuote(ref int x, ref int y)
{
int temp = x;
x = y;
y = temp;
}
void swapByOut( int x1, int y1,out int x, out int y)
{
int temp = x1;
x = y1;
y = temp;
}
}
}
输出结果:

本文介绍了C#中方法参数的三种传递方式:值参数、引用参数(使用ref关键字)和输出参数(使用out关键字)。值参数不改变实参,引用参数与输出参数都可影响实参,其中引用参数调用前需初始化,输出参数在方法内初始化。
1086

被折叠的 条评论
为什么被折叠?



