把数据赋给一个值类型(结构)时,数据存储再堆栈的变量中,堆栈是一个比较小的内存区域,进程和线程在其中存储固定大小的数据。例如无论数据的实际值是多少,整数和小数值都需要相同的字节数来存储。
把数据赋给一个引用类型时,变量中只存储一个引用,数据则存储在托管堆上。引用类型没有固定的大小。它们包含的数据存储在堆上,而不是堆栈上,但是引用类型的地址(即数据在堆上的位置)有固定的大小,所以可以存储在堆栈上。
把一个值类型赋给另一个值类型时,会复制存储在堆栈上的数据。
把一个引用类型赋给另一个引用类型时,复制的不是实际的数据,而是数据存储在托管堆上的地址。两个引用变量会引用相同的数据。把一个引用类型赋给另一个引用类型时,即某个变量保存了对另一赋给值的引用类型变量的内存的引用,则与该变量相关的数据就会发生变化。
vb。net基本类型(值类型)包括boolean,byte,char,datetime,double,short,integer,long,single,decimal
以上的基本类型均为结构
而string基本类型与其他类型不同,它是一个类而不是结构,因此它不是值类型,是引用类型。
vb与大多数语言(其中布尔值True等于1)不同,vb把true值转换为-1,再vb.net中仍支持-1,即在vb.net
中True得值等于-1
在布尔表达式中使用True值时,它等于-1,可是如果这个值转换为其他格式,它就等于1。
vb.net中隐式和显式转换工作方式不同
如果把布尔类型得值显示地转换为整数类型,并测试结果,该整数值就是1
例如: dim blnTrue as boolean=True
if blnone=-1 then '布尔值地隐式转换
console.writeline(convert.tostring(convert.toint32(blntrue))) ‘布尔值地显示转换
end if
’convert.toint32(blntrue))) 输出为1
’最后结果为1
vb。net中true隐式解释为-1