在vb.net中,用什么类型代替vb6.0下载中的any类型啊?我用object代替时,总是显示"只不

VB.NET数据类型概念剖析
阅读:337次&&&时间: 08:35:53&&
中的数据类型有很多特点,和其他语言有不同之处。那么怎样才能正确的理解这些数据类型来帮助我们提高开发效率呢?今天就先为大家介绍一下VB.NET数据类型的基础概念,作为大家的学习参考对象。
VB.NET数据类型之字符数据类型
字符数据类型是用来处理打印和显示字符的。Char包含单个字符,String则包含多个字符。VB.NET中Char和数字类型可以进行转换,但要通过Ascw和Chrw等函数来完成。如果类型检查开关被打开,则必须在声明时在单个字符后面加上值类型字符C,用以标识。例如下面语句:
Option&strict&on &Dim&Emaiin&as&char &Emailn=&@&&//打开了类型检查开关,此时不可以将其转换为Char &Emailn=&@&C&//成功转换&
String类型为零个或多个16位字符序列,每个字符取值为0~65 535。当字符串被填充了空格的时候,可以用这些函数来清除:Trim,Ltrim,Rtrim。其标识符类型字符为$,没有值类型符号。
其他VB.NET数据类型
布尔数据类型包含True和False两种值,在默认状态下是为False。这个数据类型中True的值为1,布尔类型没有值类型符号。如果将布尔值强制转换为非布尔类型时,代码中将带有升级警告。例如下面语句:
Dim&Sendagain&as&Boolean &Dim&Number&as&Integer &Number=Sendagain&
转换以后为
Dim&Sendagain&as&Boolean &Dim&Number&as&Integer &UPGRADE&WARNING:Boolean&Sendagain&is&being&converted&into&a&unmeric &Number=Sendagain&
VB.NET数据类型中的Date类型是一个64位的有符号整数。在VB 6.0中Date以Double格式存储,能够作为Double类型的变量来操作。而在VB.NET中由于Date的类型存储为64位,所以无法再作为Double类型来进行操作,但却为两者的转换提供了相关的函数:ToOADate和FromOADate。在进行源代码升级时,升级工具没有办法自动检测到所有这种转换的情况,但是它会在相应的地方插入以上两个函数,例如语句:
Dim&daynum&as&Double &Dim&day&as&Date &Daynum=day&
升级以后为
Dim&daynum&as&Double &Dim&day&as&Date &Daynum=daY.ToOADate&
Date变量每加1,就代表着100ns的时间间隔,其中存储了从公元1年1月1日中午12点到现在的时间间隔。Date类型的变量或者是常量可以同时保存日期和时间。例如:
somedate=#8/5/AM#;&
Date没有值类型符号,但是在编译时会把在#之间的值看作为Date。
对象类型是VB.NET数据类型中新增加的一个数据类型,原因是.NET采用了cLR命名规则,作用是避免跨语言开发时出现名称混乱。VB 6.0中默认的Variant数据类型,在VB.NET中变为Object类型。例如语句:
Dim&x&As&Variant&
升级以后为
Dim&x&As&Object&
如果变量声明为Obiect,则它可以指向任何程序可处理的对象,但是在声明时最好指定为特定的VB.NET数据类型,而不要指定为通用的Object。编程时应尽量使用明确的类,例如,使用TextBox而不使用Control可以更加方便地访问对象的属性和方法。Object是指向值的指针,它在任何情况均不包括值本身,由于是使用指针定位数据,所以处理起来会比已经确定位置的数据慢一点。Object也没有值类型字符。
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
Copyright &
All Rights Reservedvb和vb.net有什么区别啊
[问题点数:20分]
vb和vb.net有什么区别啊
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2009年4月 VB大版内专家分月排行榜第三2007年10月 VB大版内专家分月排行榜第三
2009年4月 VB大版内专家分月排行榜第三2007年10月 VB大版内专家分月排行榜第三
2007年7月 VB大版内专家分月排行榜第一2006年5月 VB大版内专家分月排行榜第一
2006年8月 VB大版内专家分月排行榜第二2006年4月 VB大版内专家分月排行榜第二
2006年11月 VB大版内专家分月排行榜第二
2008年8月 VB大版内专家分月排行榜第三2008年7月 VB大版内专家分月排行榜第三
2009年4月 VB大版内专家分月排行榜第三2007年10月 VB大版内专家分月排行榜第三
2008年5月 VB大版内专家分月排行榜第二
2008年1月 VB大版内专家分月排行榜第三2007年11月 VB大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
来源:本站 作者:佚名
vb.net支持多种Numeric(即数值型)数据类型,包括:Integer(整型)、Long(长整型) 、Single(单精度浮点型)、Double(双精度浮点型)、Decimal(十进制型)、Short(短整型)。
如果一个变量总是存放整数(如365)而不是带小数点的数字(如3.14159),则可将其声明为Integer(整型)、Long(长整型)或Short(短整型)。与其它的数据类型相比,整数的运算速度快,且占内存少,常在For...Next循环内作为计数器变量使用。
Decimal(十进制型)是Visual Studio.NET框架内的通用数据类型,可以表示28位十进制数,且小数点的位置可根据数的范围及精度要求而定。
Single(单精度浮点型)和Double(双精度浮点型)比Decimal(十进制型)数据类型的有效范围大得多,但有可能产生小的进位误差。详细内容见下表:
变量存储为32位整数型,范围从-至
变量存储为64位整数型,范围从-75.807
变量存储为16位整数型,范围从-3
变量存储为32位浮点数值型,范围:负数为-3.到-1.;正数为1.到3.
变量存储为64位浮点数值型,范围:负数为-1.31E308到-4.47E-324;正数为4.47E-324到1.31E308
无小数点的整数范围是-5
用户自定义类型在vb.net中称为“structure”(结构),包含有一个或多个不同种类的数据类型,尽管结构中的数据可以单独被访问,但是这些数据仍被认为是一个集合。
在vb 6.0中用户自定义类型的关键字是“Type”,之所以改成“structure”,或许是为了与C++的语法靠近吧。
一个结构的定义以“structure”关键字开始,以“End Structure”关键字结束,结构中的元素可以是任意的数据类型的组合,包括其他结构。结构一旦定义出来后就可以被用作变量声明、参数传递以及函数的返回值等用途,下面是一个结构的语法:
[Public|Private|Protected|]Structure structname {Dim|Public|Private|Friend}member1 As datatype1 ...... {Dim|Public|Private|Friend}memberN As datatypeNEnd Structure如下例定义一个“Employee”结构:
structure Employee Public GiverName As String '雇员的姓 Public FamilyName As String '雇员的名 Public Extension As Long '雇员的电话End Structure用户自定义数据类型占用内存空间是其包含的所有数据类型所占用内存空间的总和
&& vb.net的Byte数据类型
如果变量包含二进制数,则可将其声明为Byte类型的数组。在转换格式期间用Byte变量存储二进制数据就可保留数据。当String类型变量在ANSI和Unicole格式之间进行转换时,变量中的任何二进制数据都会受到破坏。在下列任何一种情况下,vb.net都会自动在ANSI和Unicole格式之间进行转换:(1)读文件时(2)写文件时(3)调用DLL时(4)调用对象的方法和属性时除一元减法之外,所有可对整数进行操作的运算符均可操作Byte数据类型,因为Byte类型在vb.net中的存储位数是8位,表示的是从0~255的无符号整数类型,不能表示负数。因此,在进行一元减法运算时,vb.net首先将Byte转换为符号整数。Byte数据类型可以转换成Integer类型、Long类型、Short类型、Single类型、Double类型、Decimal类型,且不会出现溢出的错误
vb.net的String数据类型
如果一个变量总是存储诸如“我是中国人”之类的字符串而不包含3.1415926这样的数值,则可将其声明为String类型。在vb.net中,一个字符串可包含大约2亿(2的31次方)个Unicode字符,字符的机内码从0到65535,前128个字符代表英文字母及标准键盘上的字符,128到255个字符代表特殊的字符,如拉丁字母、货币符号、分数等。声明字符串变量的格式:Dim S As String然后可将字符串值赋予这个变量,并用字符串函数对其进行操作,如:S="我是中国人"默认情况下,String类型变量或其参数是一个可变长度的字符串,随着对字符串赋予新数据,它的长度可增可减。
可以对String类型进行操作的基本函数:1.Len函数此函数返回字符串的长度,返回值为长整型(Long),其语法为:Len(string|varname)说明:string为任何有效的字符串表达式;varname为任何有效和变量名称。如果varname是Object,Len函数视其为String并且总是返回其包含的字符数,如:Dim A as StringDim B as IntegerA="我是中国人" '初始化字符串B=Len(A) '返回10(一个汉字占2字节)2.Trim、Ltrim及Rtrim函数Trim、Ltrim及Rtrim函数完成将字符串中的一部分或全部空格去掉。Trim去掉字符串中的全部空格,Ltrim去掉字符串中起始的空格,而Rtrim将字符串末尾的空格都去掉,例如:Dim A,B As StringA=" hello " '初始化字符串B=Trim(A) 'B="hello"B=Ltrim(B) 'B="hello "B=Rtrim(B) 'B=" hello"3.Substring方法:Substring方法取代以前vb 6.0中的"Right"、"Left"及"Mid"等标准函数,用法是:StrName.Substring(startChar,Length)例如:S.Substring(0,2) '相当于Left(S,2)S.Substring(S.Length(),-4) '相当于Right(S,4)
vb.net的Boolean数据类型
Boolean型数据,也称布尔型。如果变量的值只是"true/false"、"yes/no"、"on/off"等逻辑值信息,可将其声明为Boolean型。Boolean型数据占4个字节。如果其他Numeric类型数据转换为Boolean型,则"0"转换为"False",其他的非零数转换为"True",Boolean的默认值为"False"
下面例子中,"blnRunning"是Boolean变量,存储简单的"yes/no"逻辑值信息:Dim blnRunning As Boolean '查看磁带是否在转
If Recorder.Direction=1 Then
blnRunning=True
While blnRunning
vb.net的Date数据类型
Date(日期)和Time(时间)可包含在Date数据类型中,Date类型的变量存储在64位(8个字节)的长整型中,代表的时间从公元1年1月1日到公元日,表示的时间从0:00:00到23:59:59。
Date类型的数据要写在两个“#”之间,如“# January 1,1993”或“#1 Jan 93”,而且日期和时间的表示方式取决于计算机。
DateAndTime类:DateAndTime类可以返回各种形式的时间信息,常用的属性有“Now”,“Today”等,常用的方法有“Year”、"Month"、“MonthName”、“Weekday”、“WeekdayName”等,如下例,将当前的日期及时间返回给“MyDate”:Dim MyDate As DateDim MyWeekdayName As StringMyDate=DateAndTime.NowMyweekdayName=DateAndTime.WeekdayName(1) & CStr(MyDate)
vb.net的Object数据类型
来源:本站 作者:佚名
Object变量作为32位(4个字节)地址来存储,该地址可引用应用程序中或某些其他应用程序中的对象。
可以随后指定一个被声明为Object的变量去引用应用程序所识别的任何实际对象。Object变量也可以用来存储各种类型的数据变量,这个功能使Object类型取代了vb 6.0中的Variant类型,如下例:Dim objDb as ObjectobjDb=New DAO.Field()在声明对象变量时,请使用特定的类,而不用一般的Object(例如用TextBox而不用Control,或者像上面的例子那样,用“Field”取代Object)。运行程序之前,vb.net可以决定引用特定类型对象的属性和方法。因此,应用程序在运行时速度会更快。在“对象浏览器”中列举了特定的类。当使用其他应用程序的对象,并在“对象浏览器”中的“类”列表中列举对象时,应该声明对象,这样可确保vb.net能够识别引用的特定类型对象,在运行时解决引用问题。
vb.net的用户自定义类型
来源:本站 作者:佚名
用户自定义类型在vb.net中称为“structure”(结构),包含有一个或多个不同种类的数据类型,尽管结构中的数据可以单独被访问,但是这些数据仍被认为是一个集合。在vb 6.0中用户自定义类型的关键字是“Type”,之所以改成“structure”,或许是为了与C++的语法靠近吧。
一个结构的定义以“structure”关键字开始,以“End Structure”关键字结束,结构中的元素可以是任意的数据类型的组合,包括其他结构。结构一旦定义出来后就可以被用作变量声明、参数传递以及函数的返回值等用途,下面是一个结构的语法:[Public|Private|Protected|]Structure structname
{Dim|Public|Private|Friend}member1 As datatype1
{Dim|Public|Private|Friend}memberN As datatypeN
End Structure如下例定义一个“Employee”结构: structure Employee
Public GiverName As String
Public FamilyName As String
Public Extension As Long
'雇员的电话
End Structure
用户自定义数据类型占用内存空间是其包含的所有数据类型所占用内存空间的总和。
vb.net的数组定义
来源:本站 作者:佚名
数组(Arrays),可以用相同名字引用一系列变量,并用数字(索引)来识别它们,在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组的元素下标是连续的。由于vb.net对每一个索引值都分配空间,所以不要不切实际地声明一个太大的数组。
在vb.net中,所有的数组都是以“0”为起始长度的,这与vb 6.0完全不一样,在vb 6.0中,如果写下以下语句:Dim x(10) As Single
可以假定x数组的元素从1到10的,但它实际上总是包含第0个元素,换句话来说,x数组实际上是含有11个元素。
在vb.net中,这样的数组含有10个元素,编号为0到9,使我们在处理数组的长度和编号的情况与C、C++、C#和Java具有一致性,如下例:Dim Max As IntegerMax=10Dim x(Max)For j=0 to Max-1&&&& x(j)=jNext j从上面例子可以看出,数组的最后一个元素的编号,总是数组的长度减1。
vb.net的数组列表
来源:本站 作者:佚名
现在除了数组的长度计数是基于0开始的这个变化外,vb.net还引进了一个数组列表(ArrayList)对象来代替原来的集合(Collection)对象,集合对象的长度计数总是从1开始的,而且在需要的时候,数组列表的长度可以是不定的。数组列表的基本的方法和集合一样,只不过它还具有一些新的功能方法。例如:Dim Arl As ArrayList '构建一个数组列表For j=0 to 10&&&&Arl.Add(j)Next j所有的数组变量都有一个长度属性,这样就可以得知这个数组有多大:Dim Z(20) As SingleDim j As IntegerFor j=0 to z.Length-1&&&&Z(j)=jNext j
在vb.net中所有的数组都是动态的,可以在任何时候重新定义数组的长度,然而,在vb.net中已经没有ReDim Preserve表述了,可以使用New关键字来对任何一个数组进行引用,并且重新定位:'在类模块级声明Dim X() As Single'重新定位X=New Single(20){}注意:数组类型后面的大括号不要忘记写。和集合对象一样,数组列表含有一个“Count”属性和一个“Item”属性,允许使用“index”来访问数组列表中的元素。而且,和集合对象一样,这个属性也可以省略,感觉就像操作数组一样:For i=0 to ar.Count-1&&&&Console.WriteLine(ar.Item(i))&&&&console.WriteLine(ar(i))Next i下表为数组列表的一些方法:
清空数组列表的内容
Contains(object)
如果数组列表含有该对象则返回true
CopyTo(array)
把一个数组列表拷贝到一个一维的数组中去
IndexOf(object)
返回第一个元素的值
Insert(index,object)
在指定的位置插入一个元素
Remove(object)
把一个元素从列表中删除
RemoveAt(index)
把一个指定位置的元素从列表中删除
对列表进行排序
注意:本部分讲座的数组是程序中声明的变量数组,不同于控件数组。控件数组是在设计时通过设置控件的“Index”属性规定的,变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。一个数组中的所有元素具有相同的数据类型。当然,当数据类型为“object”时,各个元素能够包含不同种类的数据(对象、字符串、数值等)。可以声明任何基本数据类型的数组,包括用户自定义的类型和对象变量。此外,数组在vb.net中已经是完全的动态的了。
&& vb.net的多维数组
来源:本站 作者:佚名
多维数组可以理解为“数组的数组”,比一维数组多了“维数”概念。可以用多维数组记录复杂的信息。例如,为了追踪计算机屏幕上的每一个像素,需要引用它的X、Y坐标,此时应该用多维数组存储值。vb.net声明多维数组的语法如下:Dim ArrayName(VarNumber1,VarNumber2,......,VarNumberN) As Type可以将一维数组所有规则推广到二维以上的多维数组。例如,下面的语句声明了一个10×10的二维数组以及4×10×15的三维数组:Dim MatrixA(10,10) As DoubleDim MultiD(4,10,15) As Single元素总数为各个维的维数的乘积,即为100、600。注意:在增加数组的维数时,数组所占的存储空间会大幅度增加,所有要慎用多维数组。使用“Object”数组时更要格外小心,因为它们需要更大的存储空间。用循环操作数组可以用“For”循环嵌套来有效地处理多维数组。例如,在“MatrixA”中基于每个元素在数组中的位置为其赋值: Dim I,J As Integer
Dim MatrixA(10,10) As Double
For I=0 to 9
For J=0 to 9
MatrixA(I,J)=I*10+J
vb.net类型转换函数
来源:本站 作者:佚名
程序设计过程中经常会遇到不同数据类型之间的转换,比如说要将“Date”类型显示在文本框中,必须先进行类型转换,将其转换为“string”类型。虽然Visual Basic本身能进行一定的类型转换,但这种转换是有限制的,而且这种隐含的类型转换存在不稳定的因素,对程序的可读性、可维护性都有一定的影响。因此Visual Basic提供了一定的类型转换函数,例如用“CStr”函数将操作数转换成“String”:strDate=CStr(DateAndTime.Now)下表列出了常用的类型转换函数:
对表达式的要求
任何字符串及数字类型
任何合法的日期及时间
负数为-1.31E308到-4.47E-324;正数为4.47E-324到1.31E308
无小数点的整数范围是-5
从-至;允许分数,小数部分采取四舍五入的原则
-75.807;允许分数,小数部分采取四舍五入的原则
任何合法的表达式
-3;允许分数,小数部分采取四舍五入的原则
负数为-3.到-1.;正数为1.到3.
可以是“Boolean”类型,返回“True”或“False”;也可以是“Date”类型,返回日期的缩写形式;或者是数字类型,返回代表这个数字的字符串。
阅读(1762)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_094075',
blogTitle:'VB.net的数据类型',
blogAbstract:'\r\n\r\n\r\n\r\n\r\n&&\r\n\r\n\r\n&\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvb.net的Numeric数据类型 \r\n\r\n来源:本站 作者:佚名\r\n\r\n',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}VB6.0与VB.NET的不同之处(转)
VB6.0与VB.NET的不同之处(转)
发表评论:
TA的推荐TA的最新馆藏在vb.net中,用什么类型代替vb6.0中的any类型啊?我用object代替时,总是显示&只不_百度知道
在vb.net中,用什么类型代替vb6.0中的any类型啊?我用object代替时,总是显示&只不
在vb.net中,用什么类型代替vb6.0中的any类型啊?我用object代替旦郸测肝爻菲诧十超姜时,总是显示&只不在范围内&,所以很迷茫,哪位大神帮下忙。
提问者采纳
请参考:当我把一些旧的VB6项目转变成VS2008时会出现, “Declare”语句中不支持“As Any”的错误说明, 例如在National Instrument中有一个VBib-32.vb中有大量的这样一类的语句:Declare Function ibcmda32 Lib &Gpib-32.dll& Alias &ibcmda& (ByVal ud AsInteger, ByRef sstr As Any, ByVal cnt As Integer) As Integer如何办?有两种办法:一, 使用具体的参数例如字符串, 就用string,
旦郸测肝爻菲诧十超姜那么上面的ByRef as Any, 就写成ByRef as string, 或者 二, 使用特殊说明MarshalAsAttribute&System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.AsAny)&把这段语句放在相应之处, 然后把Any改成Object, 于是最上面的说明语句写成Declare Function ibcmda32 Lib &Gpib-32.dll& Alias &ibcmda& (ByVal ud AsInteger, &System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.AsAny)& ByRef sstr As Object, ByVal cnt As Integer) As Integer对于ByVal也是一样Public Declare Function GetPrivateProfileString Lib &kernel32& Alias&GetPrivateProfileStringA& (ByVal lpApplicationName As String, &System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.AsAny)& ByVal lpKeyName As Object, ByVal lpDefault As String,ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName AsString) As IntegerMSDN官方说明, 可以简写成:Declare Sub SetData Lib &..\LIB\UnmgdLib.dll& ( ByVal x As Short, &MarshalAsAttribute(UnmanagedType.AsAny)&ByVal o As Object)这种方法本人实际使用, 可行.
如果参数是指针类型(或数组类型)呢?怎么改写?
声明一下,这是摘抄下来的内容,因为发网址的话,百度会屏蔽。你的这个问题,我没有遇到过,很抱歉不会。建议还是搜索一下吧。
嗯嗯,谢谢了。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
vb6的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 vb6.0 的文章

 

随机推荐