假如 string a="你好!";
那么a的值是什么?a的引用地址的值是什么?

解决方案 »

  1.   

    这就是一个引用,类存堆上生成一个对象,a是一个引用指向它。
    这个是.NET做的工作,不用考虑地址什么的。
      

  2.   


    如果你把.net的引用概念硬要附会成c的指针,今天似乎懂了明天就又糊涂了。应该用.net的“脑袋”来想概念,不要掺杂c概念的恶习!a的值是什么?它就是"你好!"; “a的引用地址的值是什么”?哪有什么“引用地址”的概念?!不要把c、c++中指针的概念生搬硬套到.net。实际上,.net的CLI可以有不同的实现方法,其实现机制可以完全不同,甚至针对同一c#程序的两个编译器一个是编译为本地机器代码的而另一个是用java程序一行一行解释执行的也没有什么不可以,所以引用就是引用,是逻辑意义的,跟c、c++的指针地址概念没有关系。
      

  3.   

    //a的引用地址的值是什么?
    指向内存中的某块连续地址的起始地址
    多数情况下这个在C井中没什么意义..
    仅仅在不安全代码中才有意义,个人认为C井中的引用指针同C/C++中的引用指针并没有什么区别..
      

  4.   

    string在本质上还是一个引用类型,在参数传递时发生的还是按址传递,不过由于其特殊的恒定特性,在函数内部新建了一个string对象并完成初始化,但是函数外部取不到这个变化的结果,因此对外表现的特性就类似于按值传递。
      

  5.   

    String对象的内容是不可改变的,故也成为静态串,只要创建了一个String类型的对象,就不能再修改对象的值,任何赋值,修改操作都将被分配一个新的值。
      

  6.   


    a是在栈上的4个字节长度的变量,这个变量的值是“你好”这个引用类型(String)在托管堆上的地址~
      

  7.   

    string a="你好";意思就是在内存中的栈里定义一个名为a的变量,值为“你好”
      

  8.   

    不管最终有没有讨论出个结果,就像string是不是引用型一样,只要加深了记忆,以后会用就可以了!