今天的一道面试题,ref 关键字会返回处理过的值;而参数是一个类型的时候,不适用ref关键字,void类型的方法也可以返回处理过的值,因此引发的思考。
若在方法的参数传递过程中,传递的是“值类型”的,如没有明确规定(return、ref、out)要返回处理后的值,则方法外的变量不改变。
若在方法的参数传递过程中,传递的是一个引用类型的,则会将该引用进行处理并返回,及时没有明确标注返回。
详细资料来源于这篇文章:https://blog.csdn.net/kenjianqi1647/article/details/84501347
面试题如下:思考这段代码输出的是什么。
using System;
namespace 面试题01
{
class Program
{
static void Main(string[] args)
{
long lo1 = 1;
long lo2 = 2;
string s = "string";
Program cc = new Program();
SC(s);
SC(cc);
A(cc.i);
A(lo1);
A(ref lo2);
Console.WriteLine(s);
Console.WriteLine(cc.s);
Console.WriteLine(cc.i);
Console.WriteLine(lo1);
Console.WriteLine(lo2);
Console.ReadLine();
}
private string s = "cl.s";
private int i = 0;
static void SC(string s)
{
s = "sbc.";
}
static void SC(Program c)
{
c.s = "sbc,";
}
static void A(long i)
{
i++;
}
static void A(ref long i)
{
i++;
}
}
}