zoukankan      html  css  js  c++  java
  • VB2010新特性

    1.取消了连接符
    (1)","之后
    (2)"()"前后
    (3)"{}"前后
    (4)XML
    (5)连接字符"&"后
    (6)赋值符号"=","&=",":=","+=","-=","*=","/=","=","^=","<<=",">>="后
    (7)式内の二項演算子"+","-","/","*","Mod","<>","<",">","<=",">=","^",">>","<<","And","AndAlso","Or","OrElse","Like","Xor",后
    (8)Is,IsNot后
    (9)成员修饰符"."后
    (10)XML的关键字".",".@","...",后
    (11)属性标记的前后
    (12)查询关键字的前后
    (13)For Each的In关键字后
    (14)集合的From关键字后

    2.自动执行属性 - 为getter和setter省略的属性

    Private _name As String
    Public Property Name() As String
    Get
    Return _name
    End Get
    Set(ByVal value As String)
    _name = value
    End Set
    End Property
    
    Public Property Name As String


    3.初始化数组,使用From{元素}方式给集合对象赋初始值

    Dim statuses As New Dictionary(Of Integer, String)
    
    statuses.Add(1, "申请")
    statuses.Add(2, "科长确认")
    statuses.Add(3, "部长确认")
    statuses.Add(50, "已确认")
    statuses.Add(80, "返回")
    statuses.Add(99, "否决")
    
    Dim statuses As New Dictionary(Of Integer, String) From
    {
    {1, "申请"},
    {2, "科长确认"},
    {3, "部长确认"},
    {50, "已确认"},
    {80, "返回"},
    {99, "否决"}
    }
    
    ' 定义
    Public Class OS
    Public Property Version As Single
    Public Property Name As String
    End Class
    
    ……省略……
    
    ' 变量的定义
    Dim oses As New List(Of OS) From
    {
    New OS With {.Name = "Windows XP", .Version = 5.1},
    New OS With {.Name = "Windows Vista", .Version = 6},
    New OS With {.Name = "Windows 7", .Version = 6.1}
    }

    4.定义多行Lambda表达式

    Dim r = 20.0
    Dim pi = Function(birthday As Date)
    If birthday.Year > 1990 AndAlso
        birthday.Year < 2000 Then
        Return 3
    Else
        Return 3.14
    End If
    End Function
    Console.WriteLine(pi(Date.Today) * r * r)

    5.协变性和逆变性
    协变性(协方差)意味着你可以为一个参数,一个子类型或继承自已定义类型的某些事物使用更多的派生类型,
    逆变性意味着只能使用更少的类型,
    因为.NET中的一切都派生自对象,因此你可以使用对象替换一个参数。

    '
    Public Class Person
    Public Property Name As String
    Public Property Age As Integer
    End Class
    
    ' 员共 - 继承于人
    Public Class Employee
    Inherits Person
    End Class
    
    ' 顾客 - 继承于人
    Public Class Customer
    Inherits Person
    End Class
    
    ' 协变性的例子,将员工(Employee)的实例赋值于人(Person)
    Dim sato As New Employee With {.Name = "刘英", .Age=32}
    Dim man As Person = sato
    Class Pet
    Public Name As String
    End Class
    
    Class NameCompare
    Implements IComparer(Of Pet)
    ' ...
    End Class
    
    Class Dog
    Inherits Pet
    End Class
    
    Class Cat
    Inherits Pet
    End Class
    
    Module Module1
    Sub Main()
    Dim DogNames As New SortedList(Of Dog, Object)(New NameCompare)
    Dim CatNames As New SortedList(Of Cat, Object)(New NameCompare)
    End Sub
    End Module
    
    ' 逆变性的例子,
    'VB2008中,需要传递IComparer(Of Dog)或IComparer(Of Cat),利用逆变性传递IComparer(Of Pet)就可以

    6.动态对象

    ' 无需定义直接读取MaxRetry属性的值
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
    <add key="MaxRetry" value ="10" />
    </appSettings>
    </configuration>
    
    Dim appSettings As Object = New SettingManager()
    Console.WriteLine(appSettings.MaxRetry)
    
    ' 继承DynamicObject,重写TryGetMember方法
    Public Class SettingManager
    Inherits DynamicObject
    
    ' Get访问属性
    Public Overrides Function TryGetMember(ByVal binder As System.Dynamic.GetMemberBinder, ByRef result As Object) As Boolean
    result = System.Configuration.ConfigurationManager.AppSettings(binder.Name)
    Return True
    End Function
    End Class
    
    
    ' 可以动态执行属性或方法
    Dim user As Object = New ExpandoObject
    
    user.Name = "赵鹏"
    user.Show = Sub()
    Console.WriteLine(user.Name)
    End Sub
    user.Show.Invoke()
    CType(user, IDictionary(Of String, Object)).Remove("Name")




  • 相关阅读:
    List和Dictionary互转
    table html
    华为解锁BL
    安卓小米系统开发一些适配问题
    02布局总结
    02表格布局
    02Framelayout:帧布局
    02线性布局
    02相对布局
    01安卓像素 dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
  • 原文地址:https://www.cnblogs.com/sekihin/p/3326465.html
  • Copyright © 2011-2022 走看看
    Creative Commons License 本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。