充满魅惑的GetType(VB2005)
了解C#的人对typeof这个关键字再熟悉不过了。它是获得对象的类别,返回值是type。
在VB2005中和typeof对位的是GetType。可是,GetType的使用却充满着魅惑性。先看看下面的代码。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
MyBase.Load
Debug.Print(IsSame(New SolidBrush(Color.AliceBlue)))
End Sub
Private Function IsSame(ByVal Brush As Brush) As Boolean
Dim T1 As Type = GetType(Brush)
Dim T2 As Type = Brush.GetType
Return T1 Is T2
End Function
这段代码执行完后,会在“即时窗口”里显示什么?
是False,你想到了吗?
笔者在移植一段C#代码到VB2005代码时就碰到了如上的陷阱,使得代码在C#中运行正常,而在VB2005中就一直报错。后来才明白其中的奥妙。
先仔细分析IsSame中的两句代码。
Dim T1 As Type = GetType(Brush)
GetType是关键字,获得指定类的Type。这里的Brush表示的是类Brush,T1得到的值是类Brush
Dim T2 As Type = Brush.GetType
GetType是对象的方法,返回该对象的Type。这里的Brush表示的传递进来的参数,T2得到的是参数Brush的类型,是类SolidBrush(应该是结构)
很显然T1和T2不表示同一种类,故返回值是False。
其实,上面这段代码如果改写成容易识别的就一点问题都没有了。如下:
Private Function IsSame(ByVal B As Brush) As Boolean
Dim T1 As Type = GetType(Brush)
Dim T2 As Type = B.GetType
Return T1 Is T2
End Function
要熟悉GetType的两种用法,才能明白其中的奥妙,在移植代码的时候才不易出错。
本文转自万仓一黍博客园博客,原文链接:http://www.cnblogs.com/grenet/archive/2010/04/19/1715588.html,如需转载请自行联系原作者
充满魅惑的GetType(VB2005)相关推荐
- php摄氏度,一摄氏度的温暖
一摄氏度的温暖 "我现在真的越来越爱你了呀~" "吹牛~~" "真的,我已经不能自拔了.我掉入了你的心窝里,太软了,我都爬不动了!" &qu ...
- 登上维密舞台的程序员,她可能是史上最拼的超模!
很多人提起「超模」,总会觉得她们只是靠脸和身材在吃青春饭.但事实上这群被誉为非人类物种的尤物之中,有许多皆是美貌与才华兼具的综合体.比你美却还比你拼,用来形容她们再合适不过了. 今天要和大家分享的便是 ...
- 为什么我说考验人性多半会令你失望
永远不要去尝试考验人性,人性真的经不起考验! 下述内容多为个人见解,难免会犯学术上的错误,欢迎指正. 我可能有一天会不与代码打交道,但我这一生不可能不与人打交道,这是避免不了的.这也大大激发了了我对人 ...
- [ZT]SQL Server 的事务日志意外增大或充满的处理方法
http://support.microsoft.com/kb/317375 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf. 在 SQL Serv ...
- meetup_我在2017年举办Meetup中学到的知识以及为何对2018年充满期待。
meetup by Daniel Deutsch 由Daniel Deutsch 我在2017年举办Meetup中学到的知识以及为何对2018年充满期待. (What I've learned hos ...
- DatagridView自动充满屏幕,并能指定某列宽度
1.要使datagridview正好充满屏幕,设置其AutoSizeColumnsMode属性为fill 2. 同时,我们想要某列宽点,某列窄点,在AutoSizeColumnsMode属性为fill ...
- 技术天地 | CSS-in-JS:一个充满争议的技术方案
导读 为了解决传统CSS在现代前端应用开发中遇到的痛点,FreeWheel评估了大量新一代的CSS框架/工具/方案.在本文中,作者以评估过程为线索,介绍了CSS-in-JS的背景.现状.开发特点和趋势 ...
- Science:充满铵盐的环境依然发生固氮
文章目录 深海古菌在消耗甲烷的微生物群中固定和共享氮 写在前面 平衡氮预算 摘要 正文 图 1 在与CH4和不同的15N标记的N源孵育的沉积物中,有代表性的甲烷氧化菌ANME-2/DSS联合体中,15 ...
- 阿里专家张磊:云原生为什么对云计算生态充满吸引力?
导读:"云原生"究竟是什么?它为什么对云计算生态充满吸引力?中国本土的云原生又该走向何方?我们一起来听听新晋 CNCF TOC 成员张磊的看法. 美国当地时间 2021 年 2 月 ...
最新文章
- node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API
- 2018.12.31 NOIP训练 czy的后宫5(树形dp)
- python分布爬虫_13天搞定Python分布爬虫(第七天)(Scrapy)
- hadooppythonudf_Hive使用python编写的自定义函数UDF进行ETL
- Java Web学习总结(34)——拦截器和过滤器的差异总结
- Spring4.0学习笔记(5) —— 管理bean的生命周期
- exist name
- 【layui】省市区的三级联动
- P2并联cruise混动仿真模型 本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制、扭矩分配、能量回收及机械制动等功能模块
- 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)
- LeetCode 105. 从前序与中序遍历序列构造二叉树(dfsdfs、边界判定情况、做一题送一题)
- 常用的接口测试工具有哪些?
- Python接口自动化
- 5号,7号电池充电时间计算方法
- Vue中实现页面截图并上传
- Codevs P1066 引水入城 2010年NOIP全国联赛提高组
- windows10上配置pyspark工作环境
- 源代码(二)_尚学堂学习
- MySQL从删库到跑路: 入门篇
- 企业如何使用OA系统?OA系统有哪些功能和应用的场景?