现在的位置: 首页 > 综合 > 正文

VB.net学习笔记(四)数据类型-值类型

2012年01月16日 ⁄ 综合 ⁄ 共 2621字 ⁄ 字号 评论关闭

1、System.Object
   System.Object是VB.net所有类的父类(基类)。
   把对象转换成其父类的类型时,只能使用父类提供的方法。
   ToString方法可获得任意对象的字符串的表示。这个方法是默认实现方式是返回该对象的类型。

2、VB.net的类型:值类型、引用类型
   VB.net主要有两个变量类型:值类型、引用类型
   值类型:基本数据类型(除String),位于堆栈上,存储内存大小已知,故速度快。
   引用类型:对象、String等,位于托管堆,大小由动态内存分配。其首地址放于栈上便于引用。

   所有值类型在VB.net中都可称为结构类型

3、基本类型
   Byte     System.Byte
   Short    System.Int16
   Integer  System.Int32
   Long     System.Int64
   Single   System.Single
   Double   System.Double
   Decimal  System.Decimal
   Date     System.DateTime
   Boolean  System.Boolean
   Char     System.Char
   String   System.String
   String是基本类型中唯一的引用类型

4、条件IF...Then...
   可配合Else或ElseIf使用
   因程序是顺序执行,为取得最佳性能,可将最常见条件放于条件最开始,这样为真时,下面就不用测试了。

5、比较运算符:=  <   <=  >=  >
   另外还有And、Or进行逻辑叠加。
   为了上面得取最佳性能,VB.net提供AndAlso,OrElse,这两个采用最短路径优化比较,只要比较前面一个条件就可取得逻辑值时,后面就不用比较了。
   eg:    if   a>0  AndAlso  b>0 then  '如果第一条件为假,后面就不用测试
          if   c>0  OrElse  d>0 then  '如果第一条件为真,后面不就测试

   另外还有对象的比较法:Is  IsNot
   eg:  if   mystring.GetType Is GetType(Integer) then  '比较是否为int32
  
   上面两者结束,对一个对象运算时,经常“分别”写出两个条件,首先判断不为空,再取某值。
   有了上面可写在一个句中:
   eg:  if  MyString IsNot Nothing AndAlso  MyString.Length>5 then '不为空时再取长度

6、Select Case
   技巧:同其它语句一样,输入Select后按Tab可自动跟踪语句,用Tab可切换不同输入位置
   最后一个条件可用Case Else

7、Boolean
   其值有True和False两个。为了适应以前VB6,也可转整形,True转为-1,False转为0。
   
   为了适应不同系统的回车换行。VB.net中仍可用vbCRLF
   标准写法Environment.NewLine

8、整形

             为了兼容有不同的写法,请注意:

              int16 ,    short,   UInt16,Ushort

              Int32,     Integer,UInteger,UInt32

              Int64,UInt64,Long, ULong,UInt64

              net标准用前面,是这了迁移到不同平台如64位系统时,后面有些写法是为了兼容前面的版本,以后也许Integer不是32位,可能在64位机上是64位。

(1)Short    Int16

         占两字节,但有时机器为了优化速度,也许占4字节,但其值是不会变的。

         

         对应SQL类型为      SmallInt类型

(2)Integer    Int32

        占4字节。为了解决迁移系统问题可使用用Int32。  如果为了脱离与底层的实现方式无关,可用Integer。

        对应SQL为        Integer类型

(3)Long       Int64

      占8字节。    对应SQL类型为   BigInteger类型

(4)为了无符号类型,可在前面加上U,取值为非负,范围涨一倍。

         范围扩大并不是用无符号数的主要原因,只是为了表征某些特征,比如UInt32和32位机上的指针地址有相同特征。

8、小数(浮点)

    需要说明的是Currency已经停用。

(1)Single Double

          单精度尾数6位,双精度尾数14,各表达的精度和范围不一样。

           Dim   a  As Long=Long.MaxValue

           赋值可以直接在定义后写。每种类型后面都可以用MaxValue和MinValue

(2)Decimal 

          Single,Double虽然表达的范围大,但它们的精度不够,增加Decimal,可达28位有效数值。

         共占16字节128位,其中1位符号位,96位整数值,剩下的31位是比例因子,默认是以10为底,同时31位中还包括尾数中后置0.

(3)Char   Byte

         因VB.net是Unicode,Char故有2位,不仅英文,汉字亦可表达。

         char是无符号,负数则是错误的,同时,char是不能直接与数值型进行转换的,须指明

                  由字符到数值: ASC()      AscW()

                  由数值到字符:Chr()        ChrW()

         另外可在字符的后面加c表示是char型

                  Dim  a    as   Char="d"c    '因为Sting也是双引号,所以加C更能明确知道是Char

          如果同一些Com交互时,char在VB.net并不能与之前的VB6中的char等同,须用Byte来代替

(4)DateTime

         存储 IEEE 64 位(8 个字节)值,表示从 0001 年 1 月 1 日到 9999 年 12 月 31 日的日期以及从午夜 12:00:00 到晚上 11:59:59.9999999 的

        时间。 每个增量表示从公历第
1 年的 1 月 1 日开始经过的 100 纳秒时间。
 最大值表示
10000 年 1 月 1 日开始前的 100 纳秒。

       由此可以看到并不是以前VB6的Double类型。为了和VB6兼容,用ToOADate和FromOADate来支持。

        

      Now()继续用,添加  UtcNow() (即格林威治标准时)



抱歉!评论已关闭.