日期:2014-05-17  浏览次数:20459 次

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