了解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. canal下载 linux_canal实时同步mysql数据到redis或ElasticSearch
  2. python能不能爬数据库_python如何爬数据库
  3. sql之left join、right join、inner join的区别,连接自己时的查询结果测试
  4. sql 树状结构中知道 父节点与孙节点_集群环境中使用Zookeeper实现分布式幂等控制...
  5. 单元测试中,模拟一个新对象
  6. win10安装oracle 11g最新亲身经历操作记录
  7. HTTP协议中几个状态码
  8. Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数
  9. 景驰无人车余波:王劲“嫡系”忽然发难,官方回应辞退员工所述不实
  10. C++面试题-面向对象-静态成员变量以及静态成员函数
  11. Matlab: 汉字转拼音函数包
  12. 由浅入深了解统计机器翻译模型
  13. tooltips使用教程(鼠标悬停时显示提示)
  14. linux下ptp性能测试
  15. 转载记录:android 手动生成jks及查看jks的SHA1值
  16. Linux中进程的状态
  17. 2022-03-06:金币路径。 给定一个数组 A(下标从 1 开始)包含 N 个整数:A1,A2,……,AN 和一个整数 B。 你可以从数组 A 中的任何一个位置(下标为 i)跳到下标 i+1,i+
  18. 长庆企业信息化管理课件_长庆油田信息化建设的现状及需要注意的问题
  19. Android应用程序icon规范
  20. iOS程序员如何面试

热门文章

  1. mysql数据库 navicat premium mac 破解教程
  2. 如何更好的在企业中构建绩效管理流程
  3. ⑪HTML+CSS 页面设计练习
  4. html锚点的使用,html 锚点的使用
  5. 每一朵花儿,都有绽放的权利
  6. 万象2008收银伴侣 万象删帐软件 万象数据库修改器
  7. linux使用wget安装Maven
  8. coredrawl过期处理,非法软件 您的产品已被禁用怎么回事?
  9. SYN(用于TCP/IP连接,即建立连接时的第一个包)
  10. dubbo负载均衡策略解析