vb.net委托好处 c#委托有什么好处

vb.net 中的异步委托机制,最好有相关的详细资料讲解,我是新手所谓的委托(Delegate)实际上就是和C/C里面的函数指针差不多vb.net委托好处,只是增强了类型检查等其它健壮性方面的内容 。异步调用的回调函数有格式要求vb.net委托好处,所谓格式要求就是参数数量及类型顺序的要求,具体是什么样的你要看文档了 。一般.NETFramework里面都是AsyncCallBack 。
所谓异步编程,就是说你要求做某样事情,但是在完成这件事之前 , 我能接着做下一件事,而当这件事情完成之后,能够有一种机制通知我完成了 。相反,在完成之前一直等待,直到完成了才能进行下一步操作 , 叫做同步 。一般来说 , 我们平常写的程序都是“同步” , 或者成为“顺序执行”更加贴切 , 而“异步”则可以说是“乱序执行”的 。
可以看到 , 同步的代码非常好写 , 因为我们可以预测执行的顺序和情况 。而异步就不是很好写了 , 因为无法得知完成的时候我正在做什么、做到什么程度 。过去写这些代码是比较麻烦的 , 实现的办法就是自己建立一个处理异步事物的线程,然后在这个线程和主线程之间建立联系 。而现在这个过程大部分已经被系统封装起来了 , 你只要调用BeginXXX,系统就会为你自动建立一个新的线程处理这个事情,当前线程不阻塞,可以马上进行下一项操作 , 于是就实现了“异步”了 。但是从前面我讲道的你就应该知道 , 开始异步操作并没有完事,还需要能够得知操作完成,并能够进行相应的处理 。于是你在调用BeginXXX的时候就需要传递一个回调函数,在.NET里是以委托的方式传递的 。回调函数的意思就是“回过头来调用你” , 或者说A调用B并且传递函数C的地址,于是B在指定的情况下调用A指定的函数C 。现在就应该明白这个回调函数在BeginXXX中的作用就是,当你指定的事情做完之后将会调用这个回调函数 。
在这个回调函数里面,我们就可以进行一些后续的工作,例如接着进行性质相同的工作,或者相应的处理 。在这里,我们也许向知道刚才那件事情执行的情况和结果,这个时候我们就可以通过EndXXX来获得这些东西 。说到这里,结合上面说到的AsyncCallBack以及随便哪个BeginXXX,我们可能会对下列两个东西感到困惑:
IAsyncResult
stateObject
首先说IAsyncResult,这个是一个接口,你在回调函数中通过参数获得的对象具体是什么类型的一般我们不需要关心 , 我们只需要依照这个接口的定义进行访问就可以了 。简单点说,这个接口规定了顺利完成异步操作所需信息的最小集合 。一般来说,我们需要通过这个参数(ar)来识别异步操作 。比如说,你在一瞬间发起一百个“从不同的网络连接获取数据”的异步请求,当某一个请求被完成的时候,如何判断是那个请求被完成呢?就是依靠回调函数的参数ar 。实际上你一般是不需要参与判断的,你只要将这个ar传递给EndXXX就可以了,EndXXX会根据这个ar自行判断的 。需要注意的是,这个ar就是你调用BeginXXX的时候的返回值,可以说是一个存根,如果你需要在完成操作前终止他,也可以通过将这个存根传递给EndXXX,EndXXX就会根据情况终止操作 。(IAsyncResult里面的IsCompleted提供了是否已经完成的判断,EndXXX就是根据这个值决定是否有必要终止 。当然 , 你不需要关心他 。)
接下来我们看看stateObject,这个东西被称为状态对象 。于是大家就可能奇怪了:那个ar不也是状态吗?实际上stateObject是一个留给用户使用的东西,BeginXXX/EndXXX根本就不使用 。这个stateObject会被装到ar的AsyncState里面,也就是说这个stateObject可以随时通过访问存根(BeginXXX的返回值)或者回调函数里的ar得到,你完全没必要额外的保存到什么地方,更不需要费神的去考虑如何和你的某个异步操作对应起来 。说了半天,这个东西有什么用呢?你想怎么用就怎么用呗,发挥一下你的想象力 。比如说,你可以保存这是第几次操作,或者在多个异步操作之间要同步的时候可以作为信号旗 , 再或者直接是操作这个异步操作的对象(x.BeginXXX的时候将x传递到stateObject参数上) 。
第一种用法有点多余,第二种用法有点复杂 , 第三种我用得最多 。因为你很可能在协一个服务端,而服务段必须能够响应多个客户端,这决定了必须用异步 。同时,对于多个客户端必然有多个对象,例如网络连接的时候可能是Socket 。而实际上处理的方法或者协议是和具体哪个客户端没有关联的 , 因此我们只需要一套处理程序就够了 。这个时候第三种用法就很有用处 , 我们完全可以把代码写成这样:
SubDataReceived(ByValarAsIAsyncResult)
ar.AsyncState.EndReceive(ar)
ar.AsyncState.BeginReceive(...,ar.AsyncState)
EndSub
这样就不需要额外的数据结构去记录有那些正在活动的对象了 。
vb.net的优点是什么?VB.NET是基于.NET框架的完全对向对象的编程语言,而vb 6.0只是半面向对象的语言,使用vb.net可以编制出功能更加强大的windows程序 。现在 , 我们把vb.net和vb 6.0做一下比较 , 看看vb.net对比vb 6.0有着什么样的特性和优点 。1.在vb 6.0中 , 创建对象的时候,需要等这个对象创建完毕后,再另外调用一个独立的方法对其进行初始化 。在vb.net中, 可以利用构造函数为对象赋初值 , 这样就不需要进行烦琐的调用赋初值了 。构造函数的使用,简化了编码的过程和出错的机会 。2.vb.net编写线程的能力比vb 6.0有很大的增强 。3.在vb 6.0中,需要首先声明一个变量,然后才能对其赋值,这样就需要写两行代码 。在vb.net中,可以 使用初始化函数将这两个步骤合并在一行代码中完成,这个似乎微小的改进,提供了更少、更简单、更易于维护的代码 。4.vb.net基于.NET框架,开发者可以快速的可视化开发网络应用程序、网络服务、Windows应用程序和服务器端组件 。5.因为vb.net是基于.NET框架的 , 可以与其它.NET语言协同工作 。6.在vb.net中,通过Web窗体及ADO.NET,开发者可以快速开发可扩展的Web站点 。如果你能进一步学习vb.net,你会发现更多的新特性和优点
VB.NET 中 使用委托能带来什么好处吗?多线程中用委托 , 不会冲突 。
在类中用委托,也可以方便模块思路 。
VB.Net和C#有什么差异?还有它们的优点、缺点是什么?一、C#
--- 像VB一样简单,像C一样强大的新语
C#是第一流的面向组件的语言
由 Turbo Pascal, Delphi, and Visual J的首席设计师Anders Hejlsberg 倾心3年设计
所有的语言元素都是真正的对象
开发强壮和可重用的软件
所有的.NET Framework中的基类库(Base Class Library)都由C# 编写
二、VB.NET
--- 完全面向对象的BASIC语言
1.新语言特性
完全面向对象–继承(Inheritance), 重载(overloading), 共享的成员, 结构化异常处理
强壮的语言 –严格的类型检查, 变量声明时初始化,支持垃圾收集(Garbage collection)
强大 –支持委托(Delegates), free threading , Variant 数据类型被 Object 代替
2.与VB6一致的语法
三、2者的区别?
1.语法上的差异
例如循环的写法
VB.NET
For I = 1 To 10
‘ for loop
Next I
C#
For (i=1;i11;i) {
// for loop
}
另外Visual Basic 对大小写不敏感,而C#是大小写敏感的 。
2.C# 具有但 Visual Basic 不具有的特性
指针, 移位操作符, 内嵌的文档(XML)
重载操作符
3.Visual Basic具有但 C# 不具有的特性
更丰富的语法: Events, Try…Catch, Select…Case, 实现 Interface
后期绑定(Late binding), 动态数组, 模块(modules), 可选参数, 参数属性(parameterized properties)
后台编译
VB.net 和C#.net 各有什么优缺点C#.net优点:
运算符重载 。不安全代码(指针和固定内存区)、 无符号整数、移位运算 。
VB的优点:
【vb.net委托好处 c#委托有什么好处】即时编译、静态事件绑定、条件异常捕获、COM兼容类、宽松的类型检查和变量声明、Visual Basic Runtime库、可选参数、带参数属性、模块等语言特征、动态数组 。
通过VB.NET开发好的程序绝对没有问题(包括Direct X游戏开发) 。虽然VB.NET的资料少,但是只要C#支持的VB.NET都支持(大体上这样,因为都要经过MSIL中间环节 。除了指针之类的VB.NET不支持C#支持 , 但是没有多大实际用处) 。
vb.net的资料以英文资料居多(只有英文资料才有看头,中国的没有什么好资料) , 得看看英文水平过不过关 。还有VB.NET的ide也比C#的IDE好得多,代码看得也舒服 。(C#的大括号{}太烦人) 。
至于VB6对C的帮助,只是理解上会容易一些 , 其它用处不大 。有VB6的基础学VBNET会方便一些,但是并不是会VB6就会VB.NET,它们差别也不小 。
扩展资料:
NET、C#和ASP.NET之间的区别 :
1、NET是一个平台,一个抽象的平台的概念 。
NET 平台其本身实现的方式其实还是库,抽象层面上来看是一个平台 。
基本可以理解的NET核心就是NETFramwork 。
NETFramework包括两个关键组成元素:
a. CommonLanguageRuntime,公共语言运行时(CLR0)-提供内在管理,代码安全性检测等功能 。
b. NETFrameworkClassLibrary , .NET 框架类库(FLC)-提供大量应用类库,提高开发效率 。
学习NET Framework 是所有.NET开发人员都必须的,否则开发NET程序永远都是停留在‘外功’的招式,NETramework 是NET开发高手的‘内功’修行之一 。
2、C#是一个程序设计语言,仅仅是一个语言 。
程序设计语言仅仅是为了方便开发人员和计算机沟通的工具 , 虽然 C#语法相对 C 和 C 要多一些,但是相对来看 C#语法都比较固定 , 这样使用起来却都很容易 。我认可一位朋友说的,C#的语法更严谨!
这里回过来看看NET和C#的关系,不得不提的是NET程序的执行过程 。
C#符合NETCLR 中的公共语言运行规范 。CLS:commonlanguagespecification,当然所有的NET Language 都是符合这个规范的例如:VB.NET、XAML 和 C/CL等等 。
C#需要符合NETCLS,是因为NETCLR和JAVA虚拟机类似,有一个中间语言共机器来执行 。所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL) , 所以所有NET 支持语言都必须符合符合CLS 规范 。
P.S:如果做.NET3.0XAML开发的朋友,可以尝试下ildasm.exe看看XAML的应用程序,会发现原来 XAML其实很简单 。
3、ASP.NET是一个网站开发的技术 , 仅仅是.NET框架中的一个应用模型 。
用微软公司ASP.NET快速入门中的一句话来解释,ASP.NET是用于生成基于Web的应用程序的内容丰富的编程框架 。
ASP.net 和C#的区别:
编写asp.net通常包括两部分的代码:网页层和后台处理层,网页就是用标记语言来写的,而网页对应的后台处理程序则需要.net语言来完成,目前主要是采用c#和vb.net 。
可以说整个的asp.net网站通过c#或者vb.net来实现 。而c#则是ms .netframework的主要语言 , 可以用在网站,桌面应用等方面 。可以算是一种比较流行的编程语言 。
vb.net委托好处的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c#委托有什么好处、vb.net委托好处的信息别忘了在本站进行查找喔 。

    推荐阅读