网站首页 > 文章中心 > 其它

vb.net与c关系

作者:小编 更新时间:2023-09-29 14:39:43 浏览量:52人看过

.net技术:C#.NET与VB.NET区别

①.、.NET是一个平台,一个抽象的平台的概念.

.NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台.

vb.net与c关系-图1

本人理解的.NET核心就是.NET Framwork.

.NET Framework包括两个关键组成元素:

a.Common Language Runtime,公共语言运行时(CLR)-提供内在管理,代码安全性检测等功能

b..NET Framework Class Library,.NET框架类库(FLC)-提供大量应用类库,提高开发效率

学习.NET Framework 是所有.NET 开发人员都必须的,否则开发.NET程序永远都是停留在'外功'的招式,NET Framework 是.NET开发高手的'内功'修行之一.

程序设计语言仅仅是为了方便开发人员和计算机沟通的工具,虽然C#语法相对C和C++要多一些,但是相对来看C#语法都比较固定,这样使用起来却都很容易.我认可一位朋友说的,C#的语法更严谨!

这里回过来看看.NET和C#的关系,不得不提的是.NET程序的执行过程.

C#符合.NET CLR中的公共语言运行规范.CLS:common language specification,当然所有的.NET Language都是符合这个规范的例如:VB.NET、XAML和C++/CLI....等等.

VB.NET封装的程度更加高一些.比如可以很容易的使用集合类型.而到了C#就不得不写一个类,实现IList,ICollection和IEnumerable接口,然后再写方法.这样也就用C#实现了一个功能和VB.NET一样的集合类.也就是说,用VB.NET是半路出家,C#是从头开始.当然这也决定了在设计时的思路.

C#需要符合.NET CLS,是因为.NET CLR和JAVA 虚拟机类似,有一个中间语言共机器来执行.所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL),所以所有.NET支持语言都必须符合符合CLS规范.

C#与VB.net有什么不同呀?

都说在.NET里,.NET framework和CLR是应用运行的基础.那么VB.NET和C#是不是就完全一样,只是语法不同吗?

vb.net与c关系-图2

第一段:C#

--- 像VB一样简单,像C++一样强大的新语

C#是第一流的面向组件的语言

所有的语言元素都是真正的对象

开发强壮和可重用的软件

所有的.NET Framework中的基类库(Base Class Library)都由C# 编写

第二段:VB.NET

--- 完全面向对象的BASIC语言

①新语言特性

完全面向对象– 继承(Inheritance), 重载(overloading), 共享的成员, 结构化异常处理

强壮的语言 – 严格的类型检查, 变量声明时初始化,支持垃圾收集(Garbage collection)

强大 – 支持委托(Delegates), free threading,Variant 数据类型被 Object 代替

①语法上的差异

例如循环的写法

VB.NET

For I = 1 To 10

' for loop

Next I

C#

For (i=1;i11;i++) {

// for loop

}

另外Visual Basic 对大小写不敏感,而C#是大小写敏感的.

指针, 移位操作符, 内嵌的文档(XML)

重载操作符

更丰富的语法: Events, Try...Catch, Select...Case, 实现 Interface

后期绑定(Late binding), 动态数组, 模块(modules), 可选参数, 参数属性(parameterized properties)

后台编译

C#与VB.net间移植的技巧

按理说,这两种语言没有什么移植的必要,因为他们生成的代码可以完全通用.但是如果一个工程基本上是VB写成的,却需要少许已经存在的C#过程,用组件并不是一种效率很高的办法.就算是学习C#或VB,学会他们之间的移植可以双倍的利用已经存在的代码(如好玩的Donkey.net就只有VB版).

有人比较过这两种语言,得出的结论是他们很相似.但即便是这样,VB初学者看到诸如((Button)sender).Text="启动";之类的语法不知道如何移植到VB,而C#初学者看到Handles Button1.Click等语法也会为移植而感到头痛.下面就看看他们最难移植的部分:

①.、Option语句.VB的Option语句可以打开或关闭变量声明检查和类型转换检查.尤其是Option Strict被关闭后,VB变成弱类型语言,很多类型转换都是自动的,移植到C#中会产生无数错误.所以呢,如果要将带有Option Strict Off语句的VB程序移植到C#,最好先在VB中将Option Strict打开,然后把所有类型转换出错的地方变成强类型转换,然后再进行移植.

((System.Button)sender).Text="启动";

就要使用VB的函数型运算符CType来实现.上面的代码正确的移植方法是:

CType(sender,System.Button).Text="启动"

千万不要使用某些人推荐的,将Option Strict关闭,然后用后期绑定调用sender对象的方法,这根本不符合程序移植不能改变本质的要求.

VB

Inherits

:

Implements

MustInherit

abstract

NotInheritable

sealed

Overridable

virtual

NotOverridable

MustOverride

Overrides

override

[Overloads]

Shadows

new

Shared

static

Public

public

Protected

protected

Friend

internal

Protected Friend

protected internal

Private

private

Static

用别的方法实现

ByVal

ByRef

ref

Optional

ParamArray

params

无法实现

unsafe

vb.net与c关系-图3

fixed

可以看出,VB的关键字比较长,而且使用上也比C#更加严格.从C#向VB移植的时候,要分外注意哪些VB有而C#没有的关键字以及在C#拼写相同,在VB中拼写不同的关键字(如MustOverride和MustInherit).有些关键字如unsafe,如果C#使用了他们,将无法移植到VB中.好在这些关键字在商业应用中并不常用.

属性标签在这两种语言中非常的相似,移植上应该没有任何难度,只要知道在C#中用方括号[]表示属性标签,而在VB中用的是尖括号.另外,如果要用名称结合传递参数,C#直接使用=号,而VB使用:=(冒号和等号).

public delegate void FuncType(Object e)

...

FuncType func;

func=new FuncType(this.SampleFunction1);

//调用

func(something);

//换指向另外一个函数

然而VB中,委派类型就像是一般的对象,有它的方法,与函数本身明显不同.你不能将过程的名字直接赋给一个委派类型的对象,而必须使用AddressOf运算符,下面的例子就是上文C#程序的VB版,注意那些实现不同的地方:

Public Delegate Sub FuncType(ByVal eAs Object)

Dim func As FuncType

func=New FuncType(AddressOf Me.SampleFunc1)

'调用

func.Invoke(something)

'换指向另外一个函数

对于事件定义,两种语言都是一个委派类型加一个事件属性,如:

[C#]

public delegate void MyEventHandler(Object sender,EventArgs e);

public event MyEventHandler MyEvent;

[Visual Basic]

Public Delegate Sub MyEventHandler(ByVal sender As Object,ByVal eAs EventArgs)

Public Event MyEvent As MyEventHandler

VB还支持另外一种更加紧凑的定义方法,只有一条语句:

Public Event MyEvent(ByVal sender As Object,ByVal eAs EventArgs)

移植的时候,要把参数部分分离出来,成为一个委派类型,再按照普通方法定义事件即可.

关于事件响应,C#与Delphi等语言一样,是动态绑定事件过程的,其语法类似于下:

internal MyClass myobj;

myobj=new MyClass();

myobj.MyEvent+=this.myobj_MyEvent;

protected void myobj_MyEvent(Object sender,EventArgs e)

{

//语句

可以看到,C#是利用运算符连接事件过程和事件属性的.之后,还可以用-=运算符解除事件过程与事件属性的绑定.VB不支持运算符重载,但仍然支持这种动态绑定的事件过程,方法是使用AddHandler和RemoveHandler关键字.如上面黑体部分可以移植为:

AddHandler myobj.MyEvent,AddressOf Me.myobj_MyEvent

解除绑定的语法与此类似,只是关键字为RemoveHandler而已.一定不要忘记过程前面还有一个AddressOf关键字!

动态绑定的事件过程工作起来比较慢,VB支持一种更快的静态绑定事件过程.一旦为对象设置了静态的事件过程,就不能解除绑定,一般大多数情况都是如此.语法如下:

'定义变量时使用WithEvents关键字

Friend WithEvents myobj As MyClass

'直接书写事件过程,注意Handles的语法:

Protected Sub myobj_MyEvent(ByVal sender As Object,ByVal eAs EventArgs)_

Handles myobj.MyEvent

'语句

End Sub

遇到这种情况,要看清Handles后面的所有对象和事件,将它们一一改写成动态绑定的语句:

==

myobj1.MyEvent+=this.XXX;

protected void XXX(...){}

Try

'发生错误的代码

'解决错误的代码

End Try

这段代码无法直接移植到C#中,只有用Exception对象取代Err对象获得异常信息,才能顺利移植.另外VB的When语句带给Try语句十分灵活的用法,必须用很高的技巧才能在C#中实现,这就需要具体问题具体分析了.

VB支持Exit Try语句,可以直接从Try块或Catch块跳转到Finally块.C#没有提供类似的语法,可以用以下技巧:

'一些语句

Exit Try

Finally

try

//一些语句

goto__leave;

finally

__leave://别忘了这里还有哦!

都说到这里了大家应该明白是利用了finally块无法跳过的特征,用goto语句模拟了Exit Try语句.

如果VB程序用的是VB特有的On Error GoTo语句实现的错误处理,问题就麻烦了.代码可能在过程中上下跳跃,无法预料语句的执行方式.这种代码理解起来就头痛,更不要说移植了.总体来说,把所有语句统统转移到try块中,然后用catch一一处理错误.遇到要返回(Resume语句)的时候,只好Copy代码了.反正不是一件容易的事情,慢慢改就是了.

Public Class Class1:Implements IMyInterface

Public Sub DoSth()Implements IMyInterface.Method1

End Class

public class Class1:IMyInterface

public void Method1()

vb c c++,c# vb.net到底什么区别

vb:

微软研发的(Visual Basic)是一种工具,用的语言是Basic

Basic是比尔盖兹发家致富的一大工具

主要用来做桌面程序,C/S系统

后来因为Delphi的冲击,被强占一部分市场

VB.net:

现在有了.NET : Microsoft Visual .NET

微软用来抗衡Java的新产品

主要市场是企业级开发,和SUN的java ee竞争尤为劲烈

在企业级开发里,基本上是java ee和.net平分秋色,其他的靠边站

在C/S B/S里表色都还算不错

用的语言有Basic c++

不过,目前在.NET平台里最流行的还是C#语言的开发

ASP.net winform,ADO.net技术都是使用 c#

C:经久不衰的语言

主要应用在嵌入式编程,硬件驱动程序设计中

说白了是计算机底层的编程设计

优点是可以嵌入汇编,可以直接与硬件打交道,做底层开发

缺点是在企业级开发中,几乎无用武之地

c++ :我非常钦慕的语言,又ATT的贝尔实验室研发

主要开发工具是微软的Visual C++和Borload的BCB(Borload C++ Builder)

优点在于含有大量的库,如MFC,可直接调用windows库函数干很多事情

其中的消息处理机制令我感觉尤为经典

缺点是,要想精通真不容易

主要领域一是做桌面程序,像QQ,迅雷这种桌面软件

领域二是做游戏后台开发,大部分游戏(包括魔兽等)后台语言就是使用C++

C# :

C# 与 C++ 比较的话,最重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 不是,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进

C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过 Interop 和 Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用 C++ 来写

以上就是土嘎嘎小编为大家整理的vb.net与c关系相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章