首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

Visual Basic 11新特性一览解决办法

2012-03-31 
Visual Basic 11新特性一览http://www.infoq.com/cn/news/2012/03/VB-11作者 Jonathan Allen 译者 曹如进

Visual Basic 11新特性一览
http://www.infoq.com/cn/news/2012/03/VB-11

作者 Jonathan Allen 译者 曹如进 发布于 2012年3月11日 

Visual Basic 11推出了一些新特性,其中包括异步函数和期待已有的迭代器。

Visual Basic中的异步支持与C#中的版本一样。两者均使用相同的设计和关键字(即Async和Await),并且背后支撑这些关键字的都是.NET 4.0引入的任务并行库(Task Parallel Library)。

尽管异步函数从理论上来说可以在任意地方使用,但是其主要目的还是为了防止敏感线程(sensitive thread)发生阻塞,例如,你可以在WPF或Silverlight应用程序的UI线程中使用异步函数进行文件操作、服务调用或数据库请求。异步操作完成后会自动回归UI线程,而不会在此期间造成阻塞。

ASP.NET线程池中的线程是另一个敏感线程的例子。一般情况下,ASP.NET会限制并发线程的数量,以防止过多的上下文切换导致性能退化。这个数量通常会设置成一个任意的基数,而后当运行时(Runtime)检测到大量阻塞时再进行增长。若改用异步、非阻塞调用,系统运行将更接近于理想的“one thread-per-core”模型。

Visual Basic 11同时支持迭代器函数(iterator function)和迭代器块(iterator block)。其中迭代器函数类似于C#中的迭代器,只是语法稍有改动。在VB中,迭代器函数必须被声明为“Iterator Function”而不仅是“Function”关键字。VB开发人员使用“Yield [expression]”来返回结果值,这与C#中使用“yield return [expression]”不一样。

VB & C#语言组程序经理Anthony Green 谈到:

Iterator关键字虽然使我们避免了对那些使用Yield作为标识符(如金融相关的应用程序)的现存源文件造成破坏,虽然为我们提供了一个简洁的Yield关键字而非关键字对Yield Return,但这些并不是它出现的唯一原因。一般情况下,VB都会有一种声明风格(如XML literal、Handle和Implement)。我们认为,VB中的代码应当可以“顾名思义”,即如果一个函数是迭代器函数,那么代码就应当写明这点。当然,如果人们就把他们当做Iterator和Async函数调用,其实也能够运行。你可以从VB其他修饰符,如ReadOnly和WriteOnly属性中看到这种模式——如果属性没有Setter部分,那么从语义上就意味着它是ReadOnly,从而在声明时就可以为属性加上ReadOnly修饰符。

显式声明修饰符的另一个好处在于,我们可以提供一个更好的编辑器体验。在VB中,当你键入“Iterator Function F As Integer”时,IDE会自动为你插入“IEnumerable(Of Integer)”。类似地,如果你键入“Async Function F As Integer”,IDE会为你将“As Integer”替换成“As Task(Of Integer)”。这就像为属性添加ReadOnly修饰符一样,我们可以借助这些信息自动生成更优质的代码。

有趣的是,VB11还支持一种lambda表达式——迭代器块。下面的例子使用lambda表达式创建“IEnumerable(Of Integer)”对象并对其进行遍历。迭代器块还可以通过在“End Function”行结束后附加“.Invoke()”用在XML literal中。



同C#一样,Visual Basic 11也支持CallerMemberName、CallerLineNumber和CallerFilePath 特性。在应用这些特性之后,编译器会自动计算出行号、文件路径等值,并将它们作为可选参数进行传递。这些特性用得最多的两处地方是日志记录和属性变更通知事件。

VB11中的其他改进包括:

?引入Global命名空间,用于代码生成;
?为重载函数加入可选参数,支持部分向后兼容;
?消除方法签名中的ByVal关键字。IDE自动添加ByVal关键字最初是因为Visual Basic 7将默认传值方式由引用传递变为值传递。

[解决办法]

看过。。。。
[解决办法]

[解决办法]
谢谢分享
[解决办法]
vb.net难的有分享帖,推荐。支持。希望能写的更详细更多一些。
[解决办法]
Visual Basic 11推出了一些新特性,其中包括异步函数和期待已有的迭代器。
[解决办法]
写得非常好。自从C#4发布,VB在易用性方面的优势就不明显了。VB11的改进很及时。
[解决办法]
支持vb。。。
[解决办法]
好好的vb被折磨成这样子。。。
[解决办法]
新特性!!!
[解决办法]
果然不错,呵呵
[解决办法]

探讨

好好的vb被折磨成这样子。。。

[解决办法]
很好啊,以后用得着

[解决办法]
喜欢vb


[解决办法]
怎么没有vs11中C#的变动
[解决办法]
支持VB
[解决办法]
其实真正要写个东西,我只什么用VB ,C++,python什么的我只会抄抄改改。徒增笑料而已。
------解决方案--------------------




我记忆中的VB不是这样的~~~
[解决办法]
不错...
[解决办法]
不错 装个玩玩
[解决办法]
支持VB
[解决办法]
VB不会玩
[解决办法]
听说vb6开源。啥时候能开源啊???
给大家推荐一个非常好的工具。如果你用vs2008的话。下载一个vassist。
可能搞vc开发的朋友很熟悉这个工具。..

但vb.net也可以用了。你可以获取c#一样的。输入一个字符就可以有提示。
[解决办法]
这样代码的输入效率要高于c#..
[解决办法]
远离VB,逃离苦海。直接学C#,微软第一语言就是C#.
[解决办法]
不错,围观一下!
[解决办法]
还没退出舞台?
[解决办法]
引用:
听说vb6开源。啥时候能开源啊???
给大家推荐一个非常好的工具。如果你用vs2008的话。下载一个vassist。
可能搞vc开发的朋友很熟悉这个工具。..

但vb.net也可以用了。你可以获取c#一样的。输入一个字符就可以有提示。


vb.net不需要这个工具呀,因为它一直都有“输入一个字符就可以有提示的功能”,那是给c#准备的工具
[解决办法]
支持vb
[解决办法]
支持VB
[解决办法]
VB 6.0升下级吧,支持win8界面和多线程。
[解决办法]
还是 .NET啊, 再见.
[解决办法]
路过
[解决办法]
支持VB
[解决办法]
谢谢分享谢谢分享
[解决办法]

探讨

引用:
听说vb6开源。啥时候能开源啊???
给大家推荐一个非常好的工具。如果你用vs2008的话。下载一个vassist。
可能搞vc开发的朋友很熟悉这个工具。..

但vb.net也可以用了。你可以获取c#一样的。输入一个字符就可以有提示。


vb.net不需要这个工具呀,因为它一直都有“输入一个字符就可以有提示的功能”,那是给c#准备的工……

[解决办法]
终于支持 Yield 了。
[解决办法]
探讨
终于支持 Yield 了。

[解决办法]
探讨

引用:
终于支持 Yield 了。

和 ruby 的 yield 大不同。
如同 ruby 的 select 是 C# linq 的 where,总是让人搞糊涂。
一开始写C#程序的时候,我甚至都经常把 == 写成 =。
唉。

[解决办法]
可用分。。是多少呢。
[解决办法]
我只感觉用VB.NET的都是高手,其余的不知道。
[解决办法]
谢谢分享
[解决办法]
VB是什么
[解决办法]
感谢楼主分享!
[解决办法]
感谢分享
[解决办法]
不错,收藏了.


[解决办法]
VB功能是越来越强,应用也越来越方便,但有一点很纠结,就是编个小程序,只有几百K大小,而组件却要40多M。不知有哪位高手有办法,只提取有用的组件,而不必选择整个依赖项(40多M),以便软件交流。
[解决办法]
只用过VB6
[解决办法]
止步于VB8,更新的功能均已非我所需
[解决办法]

探讨
VB功能是越来越强,应用也越来越方便,但有一点很纠结,就是编个小程序,只有几百K大小,而组件却要40多M。不知有哪位高手有办法,只提取有用的组件,而不必选择整个依赖项(40多M),以便软件交流。

[解决办法]
很不错
[解决办法]
不是,楼主说的是vb.net还是vb?
我只是在大三时学过几天vb 6.0,你说的vb 11是不是,可以拖出一个form窗体之类的东西?也可改个名子,如caption



[解决办法]
探讨
?消除方法签名中的ByVal关键字。IDE自动添加ByVal关键字最初是因为Visual Basic 7将默认传值方式由引用传递变为值传递。

[解决办法]
vb11啊,这么多年后vb终于有点接近c#了。vb/net设计者为什么总是故意很落后于c#呢?唉
[解决办法]
好久没动过程序了,外星人来了。
[解决办法]
不错。顶一下!
[解决办法]
了解了.谢谢!
[解决办法]
好像 winxp 装不起这个版本了,不过还是支持一下。
[解决办法]
用过vb6.0,学习了!
[解决办法]
好!都没发现这些 楼主太棒了
[解决办法]
支持vb,简单好用
[解决办法]
对组件的支持还不好 小程序装个组件要几十M
[解决办法]
支持VB6

热点排行