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(, "申请")
- statuses.Add(, "科长确认")
- statuses.Add(, "部长确认")
- statuses.Add(, "已确认")
- statuses.Add(, "返回")
- statuses.Add(, "否决")
- Dim statuses As New Dictionary(Of Integer, String) From
- {
- {, "申请"},
- {, "科长确认"},
- {, "部长确认"},
- {, "已确认"},
- {, "返回"},
- {, "否决"}
- }
- ' 定义
- 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 = },
- New OS With {.Name = "Windows 7", .Version = 6.1}
- }
4.定义多行Lambda表达式
- Dim r = 20.0
- Dim pi = Function(birthday As Date)
- If birthday.Year > AndAlso
- birthday.Year < Then
- Return
- 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=}
- 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 ="" />
- </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")
VB2010新特性的更多相关文章
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- [干货来袭]C#6.0新特性
微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨天发布的新的C#6.0的部分新特性吧.. ...
- CSS3新特性应用之结构与布局
一.自适应内部元素 利用width的新特性min-content实现 width新特性值介绍: fill-available,自动填充盒子模型中剩余的宽度,包含margin.padding.borde ...
- 【译】Meteor 新手教程:在排行榜上添加新特性
原文:http://danneu.com/posts/6-meteor-tutorial-for-fellow-noobs-adding-features-to-the-leaderboard-dem ...
- 跨平台的 .NET 运行环境 Mono 3.2 新特性
Mono 3.2 发布了,对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新. Mono 3.2 主要新特性: LLVM 更新到 3.2 版本,带来更多 ...
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...
- es6 新特性2
es6其他几个非常有用的新特性. import export 这两个家伙对应的就是es6自己的module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成 ...
- ES6 新特性
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
随机推荐
- IOC容器:Unity
一.什么是IOC 学习IOC之前先来了解一个依赖导致原则(DIP),依赖导致原则是IOC的核心原理. 依赖导致:即上层模块不应该依赖于低层模块,二者应该通过抽象来依赖.依赖于抽象,而不是依赖于细节. ...
- Android studio 3+版本apk安装失败问题
studio2.3升级到3.1之后将apk发给别人下载到手机上安装,华为提示安装包无效或与操作系统不兼容,魅族提示apk仅为测试版,要求下载正式版安装. 在网上找了一下,发现是studio3.0之后的 ...
- 为什么c++中,有时可以用类名直接访问非静态成员函数?
正规的C++语言标准目前(截止到C++14)应该还不支持这种调用方法.目前微软似乎在它的VC++中推行一种叫做C++/CLI的标准,有可能会支持这种调用,如果一定要用这种调用方法的话,还应该用VS20 ...
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (五)
3DMax方面所涉及的专业知识: (1)一下的关于3DMax中对于人物的设计和操作均需要在对3DMax基础知识熟练掌握的情况下进行的. (2)骨骼架设:首先 ...
- 【Mysql】Mysql修改Root密码
1.用命令编辑/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf 或者 nano /etc/my.cnf 2.在[mysqld]下添加skip-gr ...
- selenium+java+chrome环境搭建
我只能说因为版本冲突,简直太折腾了,而搜了无数个博友的帖子才找到正确条案,就不能好好的写篇文章吗? 最近真的是太闲太闲了,平时没事总得搞点技术,不然心里感觉好空虚, 最近看上了selenium,所以试 ...
- Spring和mybatis的整合
一.搭建项目开发环境 1. 新建一个maven项目SpringMybatis,项目结构如下: 说明: src/main/java 存放java代码和映射文件: com.study.springmyba ...
- 使用openstackclient调用Keystone v3 API
本文内容属于个人原创,转载务必注明出处: http://www.cnblogs.com/Security-Darren/p/4138945.html 考虑到Keystone社区逐渐弃用第二版身份AP ...
- ios中layer动画和UIView动画代码总结
kCATransitionFade淡出 kCATransitionMoveIn覆盖原图 kCATransitionPush推出 kCATransitionReveal底部显出来 pageC ...
- jQuery Validation让验证变得如此easy(二)
上一个样例我们是统一引用jquery.validate.js这样全部必填字段的提示信息都将是This field is required. 如今要改成动态提示,比方姓名假设为空则提示姓名不能为空,密码 ...