了解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)相关推荐

  1. php摄氏度,一摄氏度的温暖

    一摄氏度的温暖 "我现在真的越来越爱你了呀~" "吹牛~~" "真的,我已经不能自拔了.我掉入了你的心窝里,太软了,我都爬不动了!" &qu ...

  2. 登上维密舞台的程序员,她可能是史上最拼的超模!

    很多人提起「超模」,总会觉得她们只是靠脸和身材在吃青春饭.但事实上这群被誉为非人类物种的尤物之中,有许多皆是美貌与才华兼具的综合体.比你美却还比你拼,用来形容她们再合适不过了. 今天要和大家分享的便是 ...

  3. 为什么我说考验人性多半会令你失望

    永远不要去尝试考验人性,人性真的经不起考验! 下述内容多为个人见解,难免会犯学术上的错误,欢迎指正. 我可能有一天会不与代码打交道,但我这一生不可能不与人打交道,这是避免不了的.这也大大激发了了我对人 ...

  4. [ZT]SQL Server 的事务日志意外增大或充满的处理方法

    http://support.microsoft.com/kb/317375 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf. 在 SQL Serv ...

  5. meetup_我在2017年举办Meetup中学到的知识以及为何对2018年充满期待。

    meetup by Daniel Deutsch 由Daniel Deutsch 我在2017年举办Meetup中学到的知识以及为何对2018年充满期待. (What I've learned hos ...

  6. DatagridView自动充满屏幕,并能指定某列宽度

    1.要使datagridview正好充满屏幕,设置其AutoSizeColumnsMode属性为fill 2. 同时,我们想要某列宽点,某列窄点,在AutoSizeColumnsMode属性为fill ...

  7. 技术天地 | CSS-in-JS:一个充满争议的技术方案

    导读 为了解决传统CSS在现代前端应用开发中遇到的痛点,FreeWheel评估了大量新一代的CSS框架/工具/方案.在本文中,作者以评估过程为线索,介绍了CSS-in-JS的背景.现状.开发特点和趋势 ...

  8. Science:充满铵盐的环境依然发生固氮

    文章目录 深海古菌在消耗甲烷的微生物群中固定和共享氮 写在前面 平衡氮预算 摘要 正文 图 1 在与CH4和不同的15N标记的N源孵育的沉积物中,有代表性的甲烷氧化菌ANME-2/DSS联合体中,15 ...

  9. 阿里专家张磊:云原生为什么对云计算生态充满吸引力?

    导读:"云原生"究竟是什么?它为什么对云计算生态充满吸引力?中国本土的云原生又该走向何方?我们一起来听听新晋 CNCF TOC 成员张磊的看法. 美国当地时间 2021 年 2 月 ...

最新文章

  1. node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API
  2. 2018.12.31 NOIP训练 czy的后宫5(树形dp)
  3. python分布爬虫_13天搞定Python分布爬虫(第七天)(Scrapy)
  4. hadooppythonudf_Hive使用python编写的自定义函数UDF进行ETL
  5. Java Web学习总结(34)——拦截器和过滤器的差异总结
  6. Spring4.0学习笔记(5) —— 管理bean的生命周期
  7. exist name
  8. 【layui】省市区的三级联动
  9. P2并联cruise混动仿真模型 本模型基于Cruise软件搭建整车模型,基于Matlab/Simulink软件搭建整车控制模块,包括整车模式控制、扭矩分配、能量回收及机械制动等功能模块
  10. 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)
  11. LeetCode 105. 从前序与中序遍历序列构造二叉树(dfsdfs、边界判定情况、做一题送一题)
  12. 常用的接口测试工具有哪些?
  13. Python接口自动化
  14. 5号,7号电池充电时间计算方法
  15. Vue中实现页面截图并上传
  16. Codevs P1066 引水入城 2010年NOIP全国联赛提高组
  17. windows10上配置pyspark工作环境
  18. 源代码(二)_尚学堂学习
  19. MySQL从删库到跑路: 入门篇
  20. 企业如何使用OA系统?OA系统有哪些功能和应用的场景?

热门文章

  1. 苹果消消乐(C++) (枚举)
  2. Fibre Channnel
  3. 利用Python对电商用户购买行为进行预测!这都能预测到?
  4. js实现选择标签,删除标签,去重校验
  5. Appium安装技巧
  6. LInux 服务器状态查询
  7. 帮我写一个discuz幻灯片切换的效果代码,完整版的
  8. PTA 7-3 判断回文字符串
  9. WCDB命令行编译报错解决方案
  10. Python的Opencv初学部分知识点(五)