读书人

考考大伙儿关于值传递与引用传递大牛

发布时间: 2013-01-23 10:44:50 作者: rapoo

考考大家关于值传递与引用传递,大牛就别进了
此题也是在学习基础知识的时候遇到的,关于C#传递参数,有两种方式,以下的代码请先想出来结果然后上机验证。



class Program
{
static void Main(string[] args)
{
List<string> names = new List<string>();
names.Add("Test");
Program p = new Program();
p.w(names);
p.AddItem(names);
p.w(names);
p.AddItem(ref names);
p.w(names);
Console.Read();
}

public void w(List<string> names)
{
foreach (string s in names)
{
Console.WriteLine(s);
}
Console.WriteLine();
}

public void AddItem(List<string> names)
{
names.Add("Test1");
}

public void AddItem(ref List<string> names)
{
names.Add("Test2");
}
}


并思考:对于引用传递,在参数前加与不加ref有何区别。
此贴目的只为共同提高。
谢谢。
[解决办法]
http://msdn.microsoft.com/zh-cn/library/s6938f28.aspx

权威解释。

这个题不错,先copy了,留下过加薪用的考题。
[解决办法]
加上ref 就可以修改参数了,比如

public void AddItem(List<string> names)
{
names.Add("Test1");
names = new List<string>();//这个无效,不会改变names
}

public void AddItem(ref List<string> names)
{
names.Add("Test2");
names = new List<string>();//由于是ref传入,所以names被修改为新的List,了里面没有内容


}

读书人网 >asp.net

热点推荐