快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

齐发国际APP下载:充满魅惑的GetType(VB2005)



懂得C#的人对typeof齐发国际APP下载这个关键字再认识不过了。它是得到工具的种别,返回值是type。

在VB2005中和typeof对位的是GetType。可是,GetType的应用却充溢着魅惑性。先看看下面的代码。

Private Sub Form1_Load(ByVal sender A齐发国际APP下载s 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 T齐发国际APP下载2 As Type = Brush.GetType

Return T1 Is T2

End Function

这段代码履行完后,会在“即时窗口”齐发国际APP下载里显示什么?

是False,你想到了吗?

笔者在移植一段C#代码到VB2005代码时就碰着了如上的陷阱,使得代码在C#中运行正常,而在VB2005中就不停报错。后来才明白此中的玄妙。

先仔细阐发IsSame中的两句代码。

Dim T1 As Type = GetType(Brush)

GetType是关键字,得到指定类的Type齐发国际APP下载。这里的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

您可能还会对下面的文章感兴趣: