读书人

微软VS2010中VB.NET的新特性解决思路

发布时间: 2012-02-15 12:09:44 作者: rapoo

微软VS2010中VB.NET的新特性
VS2010中vb.net的新特性
1.取消了连接符
大家都知道。basic语言,并不支持直接换行编写代码,代码需要一行写完,写不完的需要

用下划线标注下一行和当前行合并是一行内容,否则就需要将代码写为一行,但显然不符合我

们的习惯,一般一行代码最好限定在80个字符以内,很欣慰的告诉大家,这就是2010中vb.net

的第一个特性,支持直接换行,不再需要下划线来链接了。例如

VB.NET code
Public Sub Test(ByVal name as String,                ByVal Age as String)    MessageBox.Show("Name is " & name &                    "and age is " & age)End Sub


这段代码,你省去了4个下划线,这个更新非常让人愉悦,因为这意味着vb.net的代码也具有

了灵活性,这以前总是c系列语法才有的特性,其实了解c#和vb.net语法的人都希望看到一个

具有c系列语法的灵活,但是使用更为形象关键字的Basic语法,vb.net已经开始向这个方向发

展了,这真让人开心。


2.对于Lambda提供了更丰富的支持,以前只有Function关键字,现在增加了没有返回值的Sub

关键字。

VB.NET code
Function关键字实例Dim nums() As Integer = {1, 2, 3, 4, 5}nums = Array.FindAll(nums, Function(n)                               Console.WriteLine("testing " & n)                               Return n > 2                           End Function)Sub关键字实例Array.ForEach(nums, Sub(n)                        Console.Write("Number: ")                        Console.WriteLine(n)                    End Sub)


3.自动实现的属性,面向对象思想中,我们不应该公开自己的成员变量,但如果所有都按这个

思想,使用属性编写,我们增加一个成员变量就需要编写
VB.NET code
Private _FirstName As StringProperty FirstName() As String    Get        Return _FirstName    End Get    Set(ByVal value As String)        _FirstName = value    End SetEnd Property


在vb.net 2010中,我们不需要这么写了。你只要编写属性就可以了,编译器在编译的时候会

替你增加成员变量。你只需要一行,就和上面效果一样了。
VB.NET code
Property FirstName() As String


另外,可以设置属性的默认值,例如:
VB.NET code
Property FirstName() As String = "George" '中文译音为:饺子


4.初始化数组,使用From{元素}方式给集合对象赋初始值
下面是几种添加方法
VB.NET code
'ListDim list As New List(Of String) From {"abc", "def", "ghi"}'DictionaryDim dict As New Dictionary(Of Integer, String) From {{1, "abc"},{2, "def"}}'当然,你也可以不用声明类型,编译器会根据集合的类型来识别Dim a = {1, 2, 3} '编译器会推断为 Integer()Dim b = {1, 2, 3.5} '编译器会推断为 Double()Dim c = {"1", "2", "3"} '编译器会推断为 String()Dim d = {1, "123"} '编译器会推断为 Object() 如果设置了Option Strict On,会有警告Dim e = {{1, 2, 3}, {4, 5, 6}} '编译器会推断为 Integer(,)Dim f = {({1, 2, 3}), ({4, 5, 6})} '编译器会推断为 Integer()()
5.这个功能没看懂,大概意思可能是把com组建内嵌进去,减少发布时候的麻烦?贴原文好了
Compiling without PIAs
Using .NET to program against the Microsoft Office Object Model requires the use of Primary Interop Assemblies (PIAs), which must be deployed to the end-user’s machine. These assemblies are often very large, so deploying them can often be a nuisance.
Visual Basic 10.0 will allow these applications to be deployed without requiring PIAs to exist on the user’s machine. It does this by generating “local types” that perform the interop calls to the COM library directly. These types are annotated by the compiler in such a way that the Common Language Runtime (CLR) can unify these types across assemblies. The compiler will not copy every type in the PIA into your assembly, just the ones you actually use.
In order to turn on this feature, select the reference in Solution Explorer and then set “Embed Interop Tyeps” to “True” in the Properties window:



6.这个也不太理解,谁英文好给补充一下
Implicit Line Continuation
The underscore character is used in Visual Basic to indicate that the current logical line is being split up over one or more physical lines. Visual Basic 10.0 removes the requirement for an underscore to be present after certain tokens where its presence can be inferred (i.e. the line continuation character becomes “implicit”). While the need to use underscore has not been entirely removed from the language, the intention is that developers will not have to use it in the vast majority of lines they write.
At a high level, the line continuation character is implicit in the following situations:
1.After an attribute
2.After a comma
3.After a dot (i.e. for method invocation)
4.After a binary operator
5.After a LINQ query clause
6.After a (, {, or <%=
7.Before a ), }, or %>


总结
vb.net和c#之间的区别会越来越少,每种语言还是会保持一点自己的特性,但c#和vb.net都将具有一样的功能,2010是我们见到的差距最小的一个版本,有些vb.net的新功能是c#原本就有的,例如一行语句分行编写,sub方式的lambda表达式。但不论如何,这次2010的vb.net更强大了。

欢迎补充 ^_^



[解决办法]
我是来接分的。。。。。
[解决办法]
邪恶的饺子~顶~
[解决办法]
不错。
[解决办法]
没有用过 顶一下.
[解决办法]
6就是你说的1
隐士行继续
[解决办法]
谢谢楼主分享。不过几乎不用VB.NET的人路过。
VB.NET只要有了什么,C#用户马上吵着微软立刻给加上。
[解决办法]
谢谢版主……顺便接分!呵呵
[解决办法]
谢谢,学习
[解决办法]
顶贴,学习下!!
[解决办法]
非常好的东西,先顶慢慢看。
[解决办法]
顶................................
[解决办法]
j f
[解决办法]
谢谢楼主的介绍。
[解决办法]
关注中。。接分
[解决办法]
真的都是高手啊,小弟受教了
[解决办法]
不熟悉VB.NET的路过。
[解决办法]
没有用过 顶一下.
[解决办法]
good~
[解决办法]
不错,支持一下。
[解决办法]
我还在用vs.net2003哦。是不是跟不上时代了
[解决办法]
哈哈。不错
[解决办法]
谢谢版主……顺便接分!呵呵
[解决办法]
jfjfjfjfjfjfjfj
[解决办法]
1 VB没用过 ,不过顶一下
------解决方案--------------------


谢谢。。
[解决办法]
噢......不知道怎么样
[解决办法]
收藏了。。。。
[解决办法]
谢谢版主……顺便接分!呵呵
[解决办法]
谢谢,学习中。
[解决办法]
KANKAN
[解决办法]
现在编程越来越方便了
[解决办法]
支持。。。
[解决办法]
luguo,jf
[解决办法]
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
[解决办法]
mark
[解决办法]
learning......
[解决办法]
中文版出来玩下
[解决办法]
接分!!!!!!!!!!
[解决办法]
还没用到 。。。。。。。。。。。。。。。。。。。。。。。。。。。
[解决办法]
非常好

第六个就是下列这些情况会自动隐含加续行符

1. After an attribute ‘特性后
2. After a comma ’逗号后
3. After a dot (i.e. for method invocation) '点号后(方法调用)
4. After a binary operator ‘ 二进制运算符后
5. After a LINQ query clause ’linq查询语句后
6. After a (, {, or <%= ‘(, {, or <%= 这些符号后
7. Before a ), }, or %> ’), }, or %> 这些符号前
[解决办法]
能用vb.net写东西的人路过
顶下 嘿嘿
[解决办法]
该淘汰了吧
[解决办法]
顶贴。。顶贴。。。这个 可以顶
[解决办法]
一直用vb.net的路过
[解决办法]
....没用过
[解决办法]
我觉得以前的也是很麻烦的。
[解决办法]
sfsdafsdfsfsdfsa
[解决办法]
ding~~~~~~~~~~~~~~~~~~~~~~~
[解决办法]
学习了啊,多谢了!
[解决办法]
我爱那个属性 还有那个饺子 相当强大
[解决办法]
学习了
[解决办法]
up....
[解决办法]
哈哈···
[解决办法]
积分 获得积分
[解决办法]
来看看。
------解决方案--------------------


没有用过 顶一下.
[解决办法]
up up
[解决办法]
浏览了
[解决办法]
学习一下
[解决办法]
好啊,不知道为什么要这么迟。
[解决办法]
2101 啥时候出中文版
[解决办法]
万分感谢 我正在起步当中
[解决办法]
学习了
[解决办法]
mark
[解决办法]

[解决办法]
不懂VB.NET的人飘过
[解决办法]
还在VS2005中挣扎。。。
[解决办法]
现在都是用vb.net的,有几个新的改变的确省去很多烦躁的工作。
[解决办法]
好东西。要先赞一个。
[解决办法]
学习~~~~
[解决办法]
加油!!!!!!!!

[解决办法]
马一下啊
[解决办法]
快到100了,顶一下。
[解决办法]
vs.net 2010 目前还没使用。
[解决办法]
不错。。。
[解决办法]
好啊 我还是喜欢VB
[解决办法]
不小心路过
[解决办法]
学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[解决办法]
vb.net相对于C#来说,地位还是低一点
[解决办法]
关注中。。。。。
[解决办法]
thank you
[解决办法]
怎么不介绍下c#的特性呢,期待
[解决办法]
怎么不介绍下c#的特性呢,期待
[解决办法]
ddddd
[解决办法]
UP!
[解决办法]
以前一直用vb(不是.net),后来有了vb.net,用了几次后,发现c#蛮好用的,就改用c#了,现在vb.net基本不用了。
这样,微软推出这些新功能是为了什么呢?继续保留现有的vb.net开发者还是拉拢新的vb.net开发者呢?应该是前者吧。只是不知道现在还有多少vb.net开发者呢。
[解决办法]
标记!

读书人网 >.NET

热点推荐