DateTime是值类型,
List<DateTime> dtList = new List<DateTime>();
函数内
DateTime dt = DateTime.Now;
dtList.Add(dt);当函数退出时,dtList里面的dt还有吗?

解决方案 »

  1.   

    函数退出dt已经超过作用域了 不存在了
    但是dtList里面还是有dt的值
      

  2.   

    有啊
    值类型 
    拷贝进去了
    dt没了 
    可dtList里面有和dt相同值的DateTime
      

  3.   

    这里LZ有点误解。
    List.Add方法对输入参数的处理其实就是一个赋值。赋值运算对于引用类型来说会复制该对象的一个引用(C语言里叫做指针);而对值类型来说则会复制该值的一个副本。
    可以这样理解:List.Add添加引用类型时是添加它的一个引用,而添加值类型时则是添加它的一个副本,而不是上面说的dt本身。
      

  4.   

    局部变量啊...dtList都没了,更别说dt了
      

  5.   

    楼主啊,这种问题,一个非常 easy 的 demo 就能测出来的,其实不用上来问啊。// 测试
    private void Test<T>(List<T> list)
    {
        list.Add(DateTime.Now);
    }
    static void Main()
    {
        List<DateTime> dtlist = new List<DateTime>();
        Test<DateTime>(dtlist);
        Console.WriteLine(dtlist.Count);
    }
      

  6.   

    dtList 在函数外定义的,那就有数据,如果也是放在函数内,退出函数就等于清空了,楼主题目没有说的很清楚,我们也只能根据可能来回答