简单说明VB.NET默认属性
这篇文章主要讲解了"简单说明VB.NET默认属性",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"简单说明VB.NET默认属性"吧!
在向大家详细介绍VB.NET默认属性之前,首先让大家了解下TextBox的默认属性是Text,然后全面介绍VB.NET默认属性。在原先的VB6里,有一项奇特的功能--默认属性。在VB6中,对象的名称可以直接表示该对象的默认属性。比如TextBox的默认属性是Text,所以下面的代码
Text1.Text = "Hello"
就可以简化为
Text1 = "Hello"
这种简化给VB带来了很多麻烦,赋值运算就需要两个关键字--Let和Set,结果属性过程也需要Let和Set两种。而且这种特征在后期绑定的时候仍能工作。到了VB.NET,这项功能被大大限制了,现在只有带参数的属性才可以作为默认属性。如
List1.Item(0) = "Hello"
可以简化为
List1(0) = "Hello"
这种语法让有默认属性的对象看起来像是一个数组。那么VB怎么判断一个属性是否是默认属性呢?看下列代码
Public Class PropTest Public Property P1(ByVal index As Integer) As String Get End Get Set(ByVal Value As String) End Set End Property Default Public Property P2(ByVal index As Integer) As String Get End Get Set(ByVal Value As String) End Set End Property End Class
P1和P2两个属性基本上完全相同,***的不同是P2带有一个Default修饰符。反汇编这个类以后,可以发现两个属性完全相同,没有任何差异。但是PropTest类却被增加了一个自定义元属性System.Reflection.DefaultMemberAttribute。这个元属性指定的成员是InvokeMember所使用默认类型,也就是说后期绑定也可以使用默认属性。可是我试验将DefaultMember元属性手工添加到类型上却不能达到让某属性成为默认属性的功能。看来这项功能又是VB的一项"语法甜头"。但是,VB或C#的编译器对别人生成的类的默认属性应该只能通过 DefaultMemberAttribute来判断,所以我将一个VB类只用DefaultMemberAttribute指定一个默认方法,不使用 Default,然后将它编译以后给C#用,果然,C#将它识别为一个索引器(indexer)!
感谢各位的阅读,以上就是"简单说明VB.NET默认属性"的内容了,经过本文的学习后,相信大家对简单说明VB.NET默认属性这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!