dim myarraylist as arraylist = new arraylist()
这的new 有什么作用?我有时只写 dim myarraylist as arraylist 也可正常运行请不要用书面语言,白话告诉我吧,谢了

解决方案 »

  1.   

    以你的写法只是定义了一个变量。new的作用有两个:
    开辟所需内存
    调用相应构造函数初始化。一个对象必须初始化之后才可以使用
      

  2.   

    dim myarraylist as arraylist
    dim myarraylist as arraylist = new arraylist()第一个没有创建内存空间,第二个创建了。
      

  3.   

    new  一个对象时会创建一个该对象的实例并分配内存空间。
      

  4.   

    还是书面了点
    那为什么 dim mystr as string
    而不是 dim mystr as string = new string  ?
      

  5.   

    dim mystr as string 也没有创建内存空间,而在给他赋值的时候,可以看成将mystr的指针指向了字符串的内存地址。从语法上讲,这两种方法都是正确的,所以不出错是正常的。
      

  6.   

    那什么情况下 要用 new 呢?
      

  7.   

    在想创建内存空间的时候用new
      

  8.   

    那为什么要创建内存空间?
    我有时 dim mytable as datatable 时出错
    而dim mytable as datatable = new datatable 就正常运行,怎么回事?还有 dim mytable as new datatable 和dim mytable as datatable = new datatable  一样吗?
      

  9.   

    string 是一个特殊的引用类型,虽然使用时可以象值类型(例:int型)那样用,但其在内存中的操作是不一样的。
    值类型的数据是直接放到栈中的,而string类型的则完全不同dim mystr as string
    mystr="Hello World!";这段代码的在内存中的操作是:先在堆内存中申请一个内存空间,把Hello World!放进去,然后把这个堆内存的地址存到栈中去,也就是说mystr保存的只是一个堆内存的地址。把Hello World!放到堆内存的过程,其实已经执行了new操作;因为string是一个特殊的类型,所以不需要在代码用new来申请和初始化字符串对象。
      

  10.   

    dim mytable as datatable 
    因为mytable没有被实始化,使它就会出错。
    dim mytable as new datatable
    定义mytable变量,这个是没有初始化过的dim mytable as datatable = new datatable  
    定义mytable变量,并将其初始化
      

  11.   

    除了值类型和string类型,其它的引用类型都需要new,关于哪些属于值类型与哪些属于引用类用类型,你可以看一下MSDN Library:举个例子:所有的类在创建对象时,都需要用new,类属于引用类型。
      

  12.   

    麻烦你们啊,但是还有很多不理解的
    dim mytable as datatable 
    dim mytable as new datatable
    它俩又什么区别?我如果 datatable = ds.table(0)就不出错
      

  13.   

    那为什么要创建内存空间?
    当用户通过页面输入数据的时候,你需要将这些数据保存在内存中,然后在对它们进行处理,比如在TextBox中输入UserName,我可以用一个User类new一个对象,然后用对象中的UserName属性来保存这个UserName用户数据。如果没有创建内存空间,这个UserName数据就没有地方保存,将会在操作中随时被丢失。
      

  14.   

    麻烦你们啊,但是还有很多不理解的
    dim mytable as datatable 
    dim mytable as new datatable
    它俩又什么区别?我如果 datatable = ds.table(0)就不出错new实际上是创建一个没有任何内容的内存空间,而我们也可以将它的引用指向任何一段其他的内存空间,比如da.table[0]就是一个已经创建好了的内存空间,我们只需要将它的引用指向ds.table[0],那么就代替了new了。
      

  15.   

    avisnet(第十维度)
    都来拉  这么耐心的讲解这个问题 值得尊敬!呵呵 
    楼主的问题已经讲的很明白了,  还不理解只能去看书了.要看最基础的书.
    NEW还是不NEW里边有很多讲究的 不该NEW的时候NEW了浪费资源和时间.该NEW的不NEW可要出大错误的.
      

  16.   

    云里雾里的,反正是明白了点
    那我问一下,你们刚开始对这个东西迷惑吗?
    还有都什么不用 new ?
    string,integer,boolean`````````````````?
      

  17.   

    学C语言学了段时间,后来转学C++的时候,对里面的关键字感到迷惑,后来习惯就好了。从C++转学.NET(实际上是C#),就不那么迷惑了。值类型不用new,引用类型需要new,但string是一个特例,微软对它做了特殊的处理。integer看起来是个整型,但实际上是引用类型,它可以被实例化,以及调用它的属性和方法。