private string str = "Class1.str";
            private int i = 0;
            static void StringConvert(string str)
            {
                str = "string being converted.";
            }
            static void StringConvert(Class1 c)
            {
                c.str = "string being converted.";
            }
            static void Add(int i)
            {
                i++;
            }
            static void AddWithRef(ref int i)
            {
                i++;
            }
            static void Main()
            {
                int i1 = 10;
                int i2 = 20;
                string str = "str";
                Class1 c = new Class1();
                Add(i1);
                AddWithRef(ref i2);
                Add(c.i);
                StringConvert(str);
                StringConvert(c);
                Console.WriteLine(i1);
                Console.WriteLine(i2);
                Console.WriteLine(c.i);
                Console.WriteLine(str);
                Console.WriteLine(c.str);
                Console.ReadLine();
            }结果:10 
21 

str 
string being converted.
谁能具体解释下怎么得出这5个结果的? 详细好。

解决方案 »

  1.   

    补充下:
             class Class1
            {
                private string str = "Class1.str";
                private int i = 0;
                static void StringConvert(string str)
                {
                    str = "string being converted.";
                }
                static void StringConvert(Class1 c)
                {
                    c.str = "string being converted.";
                }
                static void Add(int i)
                {
                    i++;
                }
                static void AddWithRef(ref int i)
                {
                    i++;
                }
                static void Main()
                {
                    int i1 = 10;
                    int i2 = 20;
                    string str = "str";
                    Class1 c = new Class1();
                    Add(i1);
                    AddWithRef(ref i2);
                    Add(c.i);
                    StringConvert(str);
                    StringConvert(c);
                    Console.WriteLine(i1);
                    Console.WriteLine(i2);
                    Console.WriteLine(c.i);
                    Console.WriteLine(str);
                    Console.WriteLine(c.str);
                    Console.ReadLine();
                }
            } 
      

  2.   

    重点在ref这个关键字上。了解了有ref和没有ref的区别,你就知道为什么产生这样的结果了
      

  3.   

    有ref的方法,参数传进去出来值就变了,没有的,传进去出来还是原来的值
      

  4.   

    可参考
    http://msdn.microsoft.com/zh-cn/library/14akc2c7.aspx
      

  5.   

    http://msdn.microsoft.com/zh-cn/library/14akc2c7.aspx