using System;
 2
 3namespace Demo2
 4{
 5    /**//// <summary>
 6    /// String引用类型测试
 7    /// </summary>
 8    public class Test
 9    {
10        public static void Main(string[] args)
11        {
12            string a = "1234";
13
14            Console.WriteLine(a);
15
16            Test.Change(a);
17
18            Console.WriteLine(a);
19            Console.ReadLine();
20        }
21
22        public static void Change(string s)
23        {
24            s = "5678";
25        }
26    }
27}RT,不用ref那么就是值方式传递参数,而做参数的是string,string是引用类型,那么应该会有变化啊,怎么输出还是1234???

解决方案 »

  1.   

    string是一种特殊的类型,虽然是引用类型,但具有值类型的特点。需要使用ref或out传回参数,改成这样:using System;namespace Demo2
    {
    /**/
    /// <summary>
    /// String引用类型测试
    /// </summary>
    public class Test
    {
    public static void Main(string[] args)
    {
    string a = "1234"; Console.WriteLine(a); Test.Change(ref a); Console.WriteLine(a);
    Console.ReadLine();
    } public static void Change(ref string s)
    {
    s = "5678";
    }
    }
    }
      

  2.   

    求教雪尘:static void Main(string[] args) 

      Student s1=new Student(); 
      Student s2=new Student(); 
      s1.Age=18; 
      s2=s1; 
      s2.Age=20; 
      Console.WriteLine("s1={0},s2={1}",s1,s2); 

    其中,Students是一个学生类,有姓名,性别,年龄等属性 
    那这个输出时候s1和s2都是20了 
    这怎么回事?? 
      

  3.   

    仍然是那个问题,只要你理解了“改变引用自身”与“改变引用所引用的对象”之间的区别,这些就不是问题了。22        public static void Change(string s) 
    23        { 
    24            s = "5678"; 
    25        } 就拿这段代码来说,方法中s="5678",改变了s这个引用自身,然而这个引用却是传值过来的,是在调用处由引用a复制得来,这个方法执行完毕之后,它就被抛弃了。而a并无任何变化。
      

  4.   

    算拉,还是看我的贴子吧,
    虽然我也走过弯路.............
    只是希望大家,
    不要再把缪误,
    在CSDN里再传播了,
    ............http://topic.csdn.net/u/20090729/21/dfd14ead-b6a8-4f0d-a91e-b3c6f088fc11.html
      

  5.   

    传引用和传指针的区别
    一个是传递的引用,别人可以引用这个变量,可以读也可以写,但是不可改变原值(因为你得到了只是个引用而已)
    OUT和REF就是传指针,这样Change过程中的S就和MAIN中的S都是指向同样的一个内存地址,其实一个有修改,那么另外一个也会被修改为新的,就是说其中一个改了以后,会新建一个内存空间来存放修改后的值,然后Change和MAIN中的S也改为指向新的内存地址(为什么是新建而不是直接修改原来的内存,是因为STRING类型是只读的)不知道这样说对不对