dim myarraylist as arraylist dim myarraylist as arraylist = new arraylist()第一个没有创建内存空间,第二个创建了。
new 一个对象时会创建一个该对象的实例并分配内存空间。
还是书面了点 那为什么 dim mystr as string 而不是 dim mystr as string = new string ?
dim mystr as string 也没有创建内存空间,而在给他赋值的时候,可以看成将mystr的指针指向了字符串的内存地址。从语法上讲,这两种方法都是正确的,所以不出错是正常的。
那什么情况下 要用 new 呢?
在想创建内存空间的时候用new
那为什么要创建内存空间? 我有时 dim mytable as datatable 时出错 而dim mytable as datatable = new datatable 就正常运行,怎么回事?还有 dim mytable as new datatable 和dim mytable as datatable = new datatable 一样吗?
string 是一个特殊的引用类型,虽然使用时可以象值类型(例:int型)那样用,但其在内存中的操作是不一样的。 值类型的数据是直接放到栈中的,而string类型的则完全不同dim mystr as string mystr="Hello World!";这段代码的在内存中的操作是:先在堆内存中申请一个内存空间,把Hello World!放进去,然后把这个堆内存的地址存到栈中去,也就是说mystr保存的只是一个堆内存的地址。把Hello World!放到堆内存的过程,其实已经执行了new操作;因为string是一个特殊的类型,所以不需要在代码用new来申请和初始化字符串对象。
dim mytable as datatable 因为mytable没有被实始化,使它就会出错。 dim mytable as new datatable 定义mytable变量,这个是没有初始化过的dim mytable as datatable = new datatable 定义mytable变量,并将其初始化
麻烦你们啊,但是还有很多不理解的 dim mytable as datatable dim mytable as new datatable 它俩又什么区别?我如果 datatable = ds.table(0)就不出错new实际上是创建一个没有任何内容的内存空间,而我们也可以将它的引用指向任何一段其他的内存空间,比如da.table[0]就是一个已经创建好了的内存空间,我们只需要将它的引用指向ds.table[0],那么就代替了new了。
开辟所需内存
调用相应构造函数初始化。一个对象必须初始化之后才可以使用
dim myarraylist as arraylist = new arraylist()第一个没有创建内存空间,第二个创建了。
那为什么 dim mystr as string
而不是 dim mystr as string = new string ?
我有时 dim mytable as datatable 时出错
而dim mytable as datatable = new datatable 就正常运行,怎么回事?还有 dim mytable as new datatable 和dim mytable as datatable = new datatable 一样吗?
值类型的数据是直接放到栈中的,而string类型的则完全不同dim mystr as string
mystr="Hello World!";这段代码的在内存中的操作是:先在堆内存中申请一个内存空间,把Hello World!放进去,然后把这个堆内存的地址存到栈中去,也就是说mystr保存的只是一个堆内存的地址。把Hello World!放到堆内存的过程,其实已经执行了new操作;因为string是一个特殊的类型,所以不需要在代码用new来申请和初始化字符串对象。
因为mytable没有被实始化,使它就会出错。
dim mytable as new datatable
定义mytable变量,这个是没有初始化过的dim mytable as datatable = new datatable
定义mytable变量,并将其初始化
dim mytable as datatable
dim mytable as new datatable
它俩又什么区别?我如果 datatable = ds.table(0)就不出错
当用户通过页面输入数据的时候,你需要将这些数据保存在内存中,然后在对它们进行处理,比如在TextBox中输入UserName,我可以用一个User类new一个对象,然后用对象中的UserName属性来保存这个UserName用户数据。如果没有创建内存空间,这个UserName数据就没有地方保存,将会在操作中随时被丢失。
dim mytable as datatable
dim mytable as new datatable
它俩又什么区别?我如果 datatable = ds.table(0)就不出错new实际上是创建一个没有任何内容的内存空间,而我们也可以将它的引用指向任何一段其他的内存空间,比如da.table[0]就是一个已经创建好了的内存空间,我们只需要将它的引用指向ds.table[0],那么就代替了new了。
都来拉 这么耐心的讲解这个问题 值得尊敬!呵呵
楼主的问题已经讲的很明白了, 还不理解只能去看书了.要看最基础的书.
NEW还是不NEW里边有很多讲究的 不该NEW的时候NEW了浪费资源和时间.该NEW的不NEW可要出大错误的.
那我问一下,你们刚开始对这个东西迷惑吗?
还有都什么不用 new ?
string,integer,boolean`````````````````?