C#ref、out、in

ref==reference引用,指针,地址   ref是输入参数:
虽然形参的数据类型是值类型,但添加ref关键字,实参向形参传递的不再变量值,是变量地址。向ref形参传递参数时,实参必须初始化。ref 传入的变量必须初始化,但是在内部 可改可不改 

public void Method2(ref int a, ref bool flag)
{
    a = 100;
    flag = true;
    Console.WriteLine($"值类型修改后的值:a={a},flag={flag}");
}

向ref形参传递参数时,实参必须初始化

Class1 cls = new Class1();
int x = 1;
bool f = false;
cls.Method1(x, f);

 out输出参数:方法的返回值只能有一个,通过return返回。
方法输出的结果可以有多个,return只是返回结果的一种方式,而输出参数out是另外一种方式。输出参数在方法内必须赋初值。即:out 传入的变量不用初始化,但是在内部 必须修改该值向out形参传递参数时,实参不必初始化。

public int Method3(int a, out string x, out long y, int z)
{
    x = "hello world";
    y = 200;
    return 100;
}

向out形参传递参数时,实参不必初始化

string xx = "abc";
long yy = 100;
int result = cls.Method3(0, out xx, out yy, 0);

 in和out最大不同,in传递过来的参数,不能修改。而out必须修改。ref想改就改,不想改不改。in传递过来的参数是只读的。

public string Method4(int a, in string x, in long y, int z)
{
    //x = "hello world";  // 报错
    //y = 200;
    return x + 100 + y;
}

向in形参传递参数时,必须初始化。由于方法不让修改in形参,所以实参不受影响

string xxx = "abc";
long yyy = 100;
string result1 = cls.Method4(0, in xxx, in yyy, 0);

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值