以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  这样的定义 方式也行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7922)

--  作者:cxabc123
--  发布时间:2010/8/19 17:05:00
--  这样的定义 方式也行

dim s =string

这种格式也可以


--  作者:cxabc123
--  发布时间:2010/8/19 17:15:00
--  

Dim Builder As New ADOXBuilder
Builder.Open()
\'打开ADOXBuilder

dim s =ADOXType.DateTime
With
Builder.Tables("表A")
    .AddColumn(
"日期" ,s) \'增加日期型列
    .AddColumn(
"产品" ,ADOXType.String, 12) \'增加字符型列,长度指定为12
    .AddColumn(
"客户" ,ADOXType.String, 20) \'增加字符列,长度为20
    .AddColumn(
"数量" ,ADOXType.Integer) \'增加整数型列
    .AddColumn(
"备注" ,ADOXType.Text) \'增加备注列
End
With
Builder.Close()
\'关

这段代码也可以执行


--  作者:cxabc123
--  发布时间:2010/8/19 17:25:00
--  
这种格式看来不规范,但是只要能够自行,那么他的作用不可小看
[此贴子已经被作者于2010-8-19 17:25:07编辑过]

--  作者:mr725
--  发布时间:2010/8/19 17:55:00
--  
新鲜哦.......图片点击可在新窗口打开查看
--  作者:czy
--  发布时间:2010/8/19 18:23:00
--  

我看人家vb代码这样都写

 

Dim s = "a"
Dim i = 10


--  作者:lxl
--  发布时间:2010/8/19 20:57:00
--  

这里要小心了。

在2.0的编译器下 (VS2005)

Dim s 其实是不规范的写法,他是Dim s  As Object的缩写

        Dim s = 1  \'完全等效于 Dim s  As Object = 1
        Output.Show(s.Gettype().ToString())
        s = "sdfd"
        Output.Show(s.Gettype().ToString())

 

因为s是一个Object类型。所以它能保存你赋值的各种类型。

 

 

但是在3.5的编译器下  (vs2008)

Dim s As Object就不能缩写成Dim s,必须写完整,原因写在楼下。

有兴趣,又不怕脑袋被弄糊涂的继续往下看)

 



--  作者:lxl
--  发布时间:2010/8/19 21:04:00
--  

原因是在3.5编译器下

Dim s有了新的意思。 不再是Dim s As Object的缩写。

 

 

Dim s = "123"  等价于 Dim s As String = "123"

Dim s = 123      等价于  Dim s As Integer = 123

Dim s = new SQLCommand()  等价于 Dim s = new SQLCommand()

也就是类型推断功能,根据等号右边的值,确定了左边变量的类型。(以前左边变量是一个Object 类型)

 

 

因此,以前的写法

        Dim s = 1  

        Output.Show(s.Gettype().ToString())
        s = "sdfd"
        Output.Show(s.Gettype().ToString())

升级到VS2008项目的时候就会出错。

因为Dim s = 1  之后 s只能存放Integer 再存放"sdfd"就会报错

[此贴子已经被作者于2010-8-19 21:23:33编辑过]

--  作者:cxabc123
--  发布时间:2010/8/19 22:17:00
--  
其实要的就是这种效果,老大如果早告诉,有些代码就简单多了
[此贴子已经被作者于2010-8-19 22:18:29编辑过]

--  作者:lxl
--  发布时间:2010/8/19 22:39:00
--  
以下是引用cxabc123在2010-8-19 22:17:00的发言:
其实要的就是这种效果,老大如果早告诉,有些代码就简单多了
[此贴子已经被作者于2010-8-19 22:18:29编辑过]

非常不推荐 Dim s = 123 缩写,

他等于 Dim s As Object = 123

因为这里进行了装箱(值类型,包装成引用类型 Object)

 

不行你拿1000行数据来对比一下就知道。

1000次装箱拆箱,效率影响很明显

 

 

 


--  作者:lxl
--  发布时间:2010/8/19 22:57:00
--  

下面代码的结果值是900 如果去掉红字部分 是1100 

也就是差不多20%的效率影响

 

 

Dim t1 As Integer =  Environment.TickCount
Dim sum As Integer = 123456789
For i As Integer = 0 To 10000000
    sum = sum ^ 0.5
Next
Dim t2 As Integer =  Environment.TickCount
Output.Show(t2-t1)

不过运行很快的情况下,慢20%也没人能感觉出来,呵呵

[此贴子已经被作者于2010-8-19 22:57:20编辑过]