1、string和String的区别?object与Object的区别?
2、什么情况下默认传值、什么情况下默认传引用(即不加ref和out的时候)?
3、默认传引用的时候,如果再加上ref(或out),有没有区别?
4、string(或String)默认传值还是传引用?

解决方案 »

  1.   

    1 和 4,string是c#中的类,String是Framework的类,C# string 映射为 Framework的 String。如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作。不过建议你用string 因为这个比较符合C#的代码规范.Object也一样
    string 是引用类型.
    2 和 3 这个建议你好好的看看C#的值类型和引用类型,这个知识点.系统的看了.相信你会真正明白他们的内存机制.在这里简单回答是没有用的.
      

  2.   

    1.没有区别
    2.值类型按值传递 引用类型按引用传递(string类型除外)[这个概念比较重要,网上找代码看看]
    3.本质上没有什么区别,加上后方法签名变了,另外ref的话 方法外必须初始化
    4.string 你把它当作按值传递好了 自己写一下代码看看 多动手给分 ^_^
      

  3.   

    1 string 继承了 String 
    String 是一个类
    string 是一个方法 类型
    2 ref,out 看你函数需要,比如
    函数中需要修改原指向变量值的 就用ref 引用 修改了 既修改指向地址
    可以理解为指针吧out 么,在一般 函数返回一个对象之后 还想继续返回其他值 可以使用一下3 string 类型赋值就将建立一个新的副本以前的数据将抛弃,也就是一个新的引用
    所以才会有StringBuilder这个东西.
      

  4.   

    本帖最后由 caozhy 于 2011-03-22 05:20:36 编辑
      

  5.   

    1、string和String的区别?object与Object的区别?
      ----在C#中没有区别,但是在FrameWork中,String是CTS规范的类型,而string是C#中的类;后者一样
    2、什么情况下默认传值、什么情况下默认传引用(即不加ref和out的时候)?
      ----值类型总是传值,引用类型传递引用和分配在堆上的值(例如一个包含值类型的类)
    3、默认传引用的时候,如果再加上ref(或out),有没有区别?
      ----有。ref的作用是改变变量的作用域,并不是改变变量的传递方式
    4、string(或String)默认传值还是传引用?
      ----string是引用类型,传递引用
      

  6.   

    1 string 继承了 String  
    String 是一个类
    string 是一个方法 类型
    2 ref,out 看你函数需要,比如
    函数中需要修改原指向变量值的 就用ref 引用 修改了 既修改指向地址
    可以理解为指针吧out 么,在一般 函数返回一个对象之后 还想继续返回其他值 可以使用一下3 string 类型赋值就将建立一个新的副本以前的数据将抛弃,也就是一个新的引用
    所以才会有StringBuilder这个东西.
      

  7.   

    各说各的,应该相信谁呢?如果string是传引用的话,请看下面这个程序的执行结果:    class Program
        {
            public static void Change(string a)
            {
                a = "abc";
            }
            public static void Main()
            {
                string a = "123";
                Console.WriteLine(a);
                Change(a);
                Console.WriteLine(a);
            }
        }输出为:
    123
    123
      

  8.   

    1、string和String的区别?object与Object的区别?
    --string比较符合C#的编码规范,而String为CLS中的规范,实现.NET跨语言的特性。后者一样。
    2、什么情况下默认传值、什么情况下默认传引用(即不加ref和out的时候)?
    --默认情况下,参数为值类型时传值,参数为引用类型的时传引用。
    --若参数为值类型,我加上ref,则采用引用传递
    3、默认传引用的时候,如果再加上ref(或out),有没有区别?
    --没有区别4、string(或String)默认传值还是传引用?
    --传引用
      

  9.   

    楼主。我前几个月也是不懂到底什么是 值类型 ,什么是 “引用” 类型。引用 这个词是不是太抽象?好吧,我告诉你,引用就是指针,指针就是 ×内存的地址×。(建议看看谭浩强的C语言,会更加清晰)像int是值类型,每次传递的时候,接受的那个函数,会再分配一段内存,然后把值赋值过来。像string是比较特殊的,是引用类型,就是说比如string s="abc"; s其实存储的是存放“abc”的内存地址。
    这个在谭浩强的C里讲的很清楚。建议看看。很多时候 传送地址 比 申请空间复制数据 要更快吧。