社区
VB
帖子详情
vb.net中过程的参数默认为ByVal还是 ByRef
jhl_000101100011
2009-02-02 07:43:39
vb.net中过程的参数默认为ByVal还是 ByRef ?
是不是在原来的VB中默认为ByVal
集成到.net中以后就变为ByRef了。。。小弟上学时学的是C# 现在实习有个项目要用VB.net做 所以学习下
...全文
305
4
打赏
收藏
vb.net中过程的参数默认为ByVal还是 ByRef
vb.net中过程的参数默认为ByVal还是 ByRef ? 是不是在原来的VB中默认为ByVal 集成到.net中以后就变为ByRef了。。。小弟上学时学的是C# 现在实习有个项目要用VB.net做 所以学习下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzxap
2009-02-03
打赏
举报
回复
ByVal
ycfbhsk
2009-02-03
打赏
举报
回复
建议不使用参数默认(或者根本不支持),应该明确ByVal还是 ByRef,否则对可读性带来很大的影响。
Jeff20040819
2009-02-03
打赏
举报
回复
UP
LSSQXT
2009-02-02
打赏
举报
回复
默认传递方式就是ByVal
.Net 下区别使用 By
Ref
/
ByVal
的重要性 分享
一直以来在 VB6 下,
参数
默认
都是按照 By
Ref
传送的,(即按地址传送) 而在 .Net(C#,
VB.Net
) 下,
参数
默认
是使用
ByVal
(即按值传送) 传送的,一直没怎么注意。这些天在优化程序时发现 当传送 大变量时,使用
默认
方式(
ByVal
) 效率相当低如传入的
参数
变量类型 是 大字符串,数组,集合,DataSet 等测试的关键代码如下,我传入的字符串并没有特别大,变量越大,使用 By
Ref
效率越高,当然,当传入得变量可以被修改或无其他作用时,可以改用 By
Ref
传 代码如下: Private Declare Function GetTickCount Lib “ke
单位换算控件
'============================='
' 单位换算控件WeiQi.Control '
'作者:ChuYa.Studio::fanyugod '
' QQ:11330934 '
' Email::fanyugod@163.com '
'
VB.NET
'
'============================='
此控件是用于单位换算的控件
控件
中
内置了常用的单位,可以扩展和删除
1 属性
1.1 只读属性
1.1.1 AuthorDeclare
类型:String
说明:返回作者申明和版本信息
1.2 设置属性
1.2.1 TheMainAddress
类型:String
说明:设置
默认
单位文件位置,如果该位置没有文件或者文件错误,控件将在启动时自动加载代码
中
的单位
1.2.2 AutoClip
类型:Boolean
说明:是否在单位成功换算后将结果保存入剪贴板(此
参数
不影响通过函数接口转换单位,函数接口永不会将结果放入剪贴板)
2 接口
2.1 ShowMeControl
类型:无
说明:启动单位设置窗口
2.2 TranUnit(
ByVal
SourceNumber As Double,
ByVal
SourceUnit As String,
ByVal
AimUnit As String, By
Ref
AimNumber As Double, By
Ref
ErrMessage As String)
类型: Boolean
说明:将Sourcenumber数字,其单位为(SourceUnit),转换成AimUnit单位,结果放入AimNumber
中
,如果出现错误,则ErrMessage
中
有
中
文说明
3 单位约定
3.1 单位分类
单位分为两类(基本单位和组合单位)
基本单位:
基本单位分为都种类,可以转换的在一类,并设置基准单位,其他该种类单位必须设置与基准单位的转换比例,基本单位可以任意字符,
但不能包括 乘法、除法、乘方字符(这三个字符可以自由设置!)
组合单位:
组合单位有基本单位组合或特殊单位(非基本单位组合),也分门别类,能转换的放到一类
中
!组合单位有两种表示:内部表示和外部表示
内部表示是基本单位的组合,外部表示是单位的外部简写(注意:外部简写不能包含乘法、除法、乘方字符(这三个字符可以自由设置!))
每种组合单位设置一个基准单位,其他该类单位必须设置与基准单位的转换比例!
3.1.1 温度单位的特殊规定:
应为温度单位的特殊性,这个基本单位是特别处理的,请不要删除控件内部基本单位
中
的温度单位!
3.2 单位组成
单位必须是String,由乘法符号、除法符号、乘方符号分隔各个不同的单位(只能是一个字符)。
除法符号在同一单位
中
只能出现一次,并且符号两边必须有字符(可以用1简化)。
乘法符号用于连接各个子单位,每个子单位可以跟一个乘方符号和一个数值,如果出现乘方符号必须后跟数值
注意:最简单位(基本单位和组合单位的外符号)不能出现以上三个字符!
4 如果还有疑问请告诉我!
围棋的控件
'============================='
' 围棋控件WeiQi.Control '
'作者:ChuYa.Studio::fanyugod '
' QQ:11330934 '
' Email::fanyugod@163.com '
'
VB.NET
'
'============================='
此控件是19x19标准围棋控件,请在鼠标事件
中
加入相应代码
1 属性
1.1 只读属性
1.1.1 AuthorDeclare
类型:String
说明:返回作者申明和版本信息
1.1.2 NextWhite
类型:Boolean
说明:返回下一步棋信息(如果下步棋该白棋走为真)
1.1.3 WhiteTiNumber
类型:integer
说明:返回白棋提到的黑棋数量
1.1.4 BlackTiNumber
类型:integer
说明:返回黑棋提掉的白棋数量
1.1.5 GlobeErrMessage
类型:String
说明:返回最后一个错误的解释
1.1.6 Record_Finger
类型:integer
说明:返回当前棋谱指针(也是当前棋谱显示长度)
1.1.7 Record_LastFinger
类型:integer
说明:返回棋谱的最长纪录(如果没有回退,此数值将与Record_Finger相同)
1.1.8 Record_Long
类型:integer
说明:返回棋谱的长度
注意:只是棋谱数组的长度!不是已经下了的棋谱长度!其实这个属性没有什么用处,因为你无法手动增加它!
1.1.9 Record_Hand(
ByVal
i As Integer)
类型:byte
说明:返回第i步棋谱是黑棋还是白棋
注意:其实除了让子棋,奇数就是黑棋,偶数就是白棋。参见后面的常数表
1.1.10 Record_X(
ByVal
i As Integer)
类型:byte
说明:返回第i步棋所在的横坐标(应该是:1-19,写的时间有点长了>_1.1.11 Record_Y(
ByVal
i As Integer)
类型:byte
说明:返回第i步棋所在的纵坐标(应该是:1-19,写的时间有点长了>_1.1.12 Record_Dead(
ByVal
i As Integer)
类型:Boolean
说明:返回第i步是的死棋信息(如果此步棋提了对方的棋为真)
1.1.13 Record_Ti(
ByVal
i As Integer)
类型:byte
说明:返回第i步是的提子信息(如果此步棋提了对方的棋,纪录是提了什么方向的棋。你不必管它的含义!)
注意:如果你要保存棋谱,请纪录5个Record_(i as integer)属性!在读取棋谱时必须使用他们!
1.1.14 ReturnStatus
类型:byte
说明:返回棋盘状态(参见常数表,分别为比赛状态,打谱状态和编辑状态)
注意:状态将影响到单击鼠标左键会作出的反应
比赛状态:如果是轮到matchwhite所指的白棋或黑棋时,左键才是走棋
打谱状态:按照预先装入的棋谱反应,左键只是前进一步
编辑状态:单击左键纪录一步棋,黑白棋轮流走!
1.2 可设置属性
1.2.1 QiPanBack
类型:Byte
说明:棋盘背景样式
0:使用纯色作为棋盘背景,纯色由BackGroudColor提供
一下使用图片,请务必设置BackPictureImage属性
1:居
中
2:平铺
3:拉伸
4:放大
其他数值报错!
1.2.2 BackPictureImage
类型:Bitmap
说明:背景图片,只有Qipanback为1,2,3,4数值时才有用
1.2.3 ShowNumber
类型:Boolean
说明:是否显示每步棋的手数
1.2.4 ShowUpHand
类型:boolean
说明:是否使用菱形框标示出上一步的位置,
默认
为True
1.2.5 BackGroudColor
类型:Color
说明:棋盘的背景颜色,只有QiPanBack为0时才有用!
1.2.6 PenDrawQiPan
类型:pen
说明:画棋盘线的笔,可以设置宽度,颜色和线形……,只要是pen能设置的东西都行。
1.2.7 PenDrawOther
类型:pen
说明:画各种显示线条,就是上一步提示,寻找手数,当前位置的画笔
1.2.8 StarBrush
类型:SolidBrush
说明:画星位的笔刷
1.2.9 WordFont
类型:font
说明:文字字体,包括手数和边框数值
1.2.10 MatchWhite
类型:boolean
说明:点击左键走白棋还是黑棋,true为白棋,只有在比赛状态时才有用
1.2.11 WarningNumber
类型:integer
说明:限制数量,如果回退超过这个数值,再走棋会提问!
默认
数值为5
1.2.12 WhiteIcon
类型:icon
说明:显示的白棋图标,只能是图标
1.2.13 BlackIcon
类型:icon
说明:显示的白棋图标,只能是图标
2 接口
2.1 FindShouNumber(
ByVal
i As Integer)
返回值:byte
说明:寻找第i手棋,找到后会在棋盘上用方框显示出来直到点击了鼠标的左键,返回数值见常数表
2.2 TranslateErrCodeToExplain(
ByVal
code As Byte)
返回值: String
说明:如名字所说……,返回一个错误代码的解释
2.3 UpDataBack
返回值:无
说明:更新棋盘
2.4 BackOneStep
返回值:boolean
说明:回退一步,真值成功,假值出现错误,通过GlobeErrMessage属性能得到错误信息,一般是回退到底的错误!
2.5 SetQiPanInit(By
Ref
QiPan(,) As Byte)
返回值:boolean
说明:将QiPan(18,18)数组复制到棋盘
中
去,这个函数只能在棋谱没有纪录的时候使用,否则回出错,会设置GlobeErrMessage
注意:如果数组没有19,19个大会报错,超过的部分将忽略!其
中
数值只能是0,WHITE,BLACK。(参见
参数
表)
用于让子棋,在棋开始前在棋盘上摆棋。
2.6 GoStep(
ByVal
x As Byte,
ByVal
y As Byte)
返回值:boolean
说明:走一步棋接口,真是成功,假是出错(比如不能立即回填被提一子),会设置GlobeErrMessage
如果是虚手请输入虚手常数
注意:x 为横坐标,y为纵坐标,只能是1-19数值,注意,此函数只能在棋盘状态为非打谱状态下才有用!
如果用在比赛状态,本函数不检查走棋的顺序!
2.7 SetStauts(
ByVal
i As Byte, [By
Ref
Hand() As Byte] = Nothing, [By
Ref
ix() As Byte] = Nothing, [By
Ref
iy() As Byte] = Nothing, [By
Ref
dead()] As Boolean = Nothing, [By
Ref
ReTi()] As Byte = Nothing)
返回值:boolean
说明:设置棋盘状态,真是成功,假是出错,会设置GlobeErrMessage
i为状态常数(参见常数表,如果输入非常数表数值会出错!)
其他
参数
只在i设置为DAPU时有用!后续5个数组的长度必须相等并大于0,否则出错!
这5个
参数
是棋谱必要信息,与5个Record_(i as integer)属性相对应!如果你要保存棋谱,请务必注意!
注意:此函数会重置棋谱和棋盘!所有信息均将丢失,并且本函数不会发出任何提问!请一定要注意!!!!
3 相关常数
3.1 棋谱常数
Const XUSHOU As Byte = 21 '虚手
Const BLACK As Byte = 111 '黑棋
Const WHITE As Byte = 100 '白棋
3.2 状态常数
Const MATHING As Byte = 11 ' 比赛状态
Const DAPU As Byte = 22 ' 打谱状态
Const WRITEING As Byte = 33 '编辑状态
4 外部事件
没有增加特殊的外部事件,当单击鼠标时,先进行棋盘操作,在引发OnMouseUp事件!主要的编程接口全在这个事件
注意,当你处理鼠标事件时,整个棋谱已经完成更新和显示等一切工作或因为错误或限制没有对棋谱进行处理,
你可以对比单击鼠标前的Record_Finger属性得到棋谱是否改变(也就是是否成果走棋的信息!)
对比事件返回的按键属性和棋谱状态属性确定是那种事件发生(是走了一步棋,还是回退了一步,还是做了一步虚手,还是前进了一步……)
5 本说明到此结束,如有疑问可以联系我,联系方式见最上!
vb.net
中
关于
byval
和by
ref
的使用
在
vb.net
中
,
byval
和by
ref
使用是不同的: .NET
中
CLR的类型系统将对应简单值的类型同对应传统“对象”的类型区分开来。 前者被称为值类型(value type),后者被称为引用类型(
ref
erence type)。 值类型直接包含它们的数据,值类型的实例要么在堆栈上,要么内联在结构
中
。 引用类型存储对其值的内存地址的引用,位于堆上。 值类型和引用类型的赋值操作是
VB
中
Byval
与By
ref
的区别。
1.
byval
是按值传递的方式,而by
ref
是按地址的传递方式。 2.在程序
中
x是按值传递,而y是按地址传递,随后我们在程序
中
进行调用,因为在调用之前已经将z赋值为300,e赋值为400. 3.所以调用函数以后,按值传递的Z为300,而按地址传递的E则为200,e即使被赋值,因为它是根据地址进行传递的,所以值依然不变。 ...
VB
16,554
社区成员
110,527
社区内容
发帖
与我相关
我的任务
VB
VB技术相关讨论,主要为经典vb,即VB6.0
复制链接
扫一扫
分享
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章