Foxtable(狐表)用户栏目专家坐堂 → 这样的定义 方式也行


  共有11802人关注过本帖树形打印复制链接

主题:这样的定义 方式也行

帅哥哟,离线,有人找我吗?
cxabc123
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
这样的定义 方式也行  发帖心情 Post By:2010/8/19 17:05:00 [只看该作者]

dim s =string

这种格式也可以


 回到顶部
帅哥哟,离线,有人找我吗?
cxabc123
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/19 17:25:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/19 17:55:00 [只看该作者]

新鲜哦.......图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/8/19 18:23:00 [只看该作者]

我看人家vb代码这样都写

 

Dim s = "a"
Dim i = 10


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/8/19 22:17:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 16 1 2 下一页