考考大家关于值传递与引用传递,大牛就别进了
此题也是在学习基础知识的时候遇到的,关于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");
}
}
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,了里面没有内容
}