vb.net与c的功能 vb与c#

VB.NET和C语言,C,JAVA之间有什么区别(具体点)?)总得来说,语言可以分为两种,一种是面向对象,一种是面向过程.(想要学,就去买本书回来慢慢看.)
我学了一年多的编程了,总学过C语言,VB.NET,C.
其中,觉得,C要学好,需要下太大的资本了.也要有一些条件!
不过,C和java有一个大的区别,就是C 无论做一个项目,需要创建许多的类.而java本身就已经具有那些类了,只要你调用下就ok.不过,C 那样用户创的类,实用,灵活方面,就比较实在!不过,说白了点,就是麻烦..你看着自己的意愿发展吧!不能全学语言,要专攻一门.
C#与VB.net有什么不同呀?都说在.NET里,.NET framework和CLR是应用运行的基础 。那么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)
后台编译
C#与VB.net间移植的技巧
按理说,这两种语言没有什么移植的必要,因为他们生成的代码可以完全通用 。但是如果一个工程基本上是VB写成的,却需要少许已经存在的C#过程,用组件并不是一种效率很高的办法 。就算是学习C#或VB,学会他们之间的移植可以双倍的利用已经存在的代码(如好玩的Donkey.net就只有VB版) 。
有人比较过这两种语言,得出的结论是他们很相似 。但即便是这样 , VB初学者看到诸如((Button)sender).Text=“启动”;之类的语法不知道如何移植到VB,而C#初学者看到Handles Button1.Click等语法也会为移植而感到头痛 。下面就看看他们最难移植的部分:
1、Option语句 。VB的Option语句可以打开或关闭变量声明检查和类型转换检查 。尤其是Option Strict被关闭后,VB变成弱类型语言,很多类型转换都是自动的,移植到C#中会产生无数错误 。因此,如果要将带有Option Strict Off语句的VB程序移植到C#,最好先在VB中将Option Strict打开,然后把所有类型转换出错的地方变成强类型转换 , 然后再进行移植 。
2、类型转换 。VB提供了很多类型转换函数型运算符,如CInt(),CSng(),CStr()等,在C#中只要用(int),(float),(String)即可 。然而如果不是标准类型,如下面的C#语句:
((System.Button)sender).Text=“启动”;
就要使用VB的函数型运算符CType来实现 。上面的代码正确的移植方法是:
CType(sender,System.Button).Text=“启动”
千万不要使用某些人推荐的,将Option Strict关闭,然后用后期绑定调用sender对象的方法,这根本不符合程序移植不能改变本质的要求 。
3、修饰符和属性标签 。VB和C#的修饰符是完全对等存在的,但是拼写往往不同 , 给移植带来了很多麻烦,尤其是表示相同意思的关键字从字面理解完全不同的时候 。下面就给出了VB和C#对应的关键字:
VB
C#
VB
C#
Inherits
:
Implements
:
MustInherit
abstract
NotInheritable
sealed
Overridable
virtual
NotOverridable
sealed
MustOverride
abstract
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
无法实现
fixed
可以看出 , VB的关键字比较长,而且使用上也比C#更加严格 。从C#向VB移植的时候 , 要分外注意哪些VB有而C#没有的关键字以及在C#拼写相同,在VB中拼写不同的关键字(如MustOverride和MustInherit) 。有些关键字如unsafe,如果C#使用了他们,将无法移植到VB中 。好在这些关键字在商业应用中并不常用 。
属性标签在这两种语言中非常的相似,移植上应该没有任何难度,只要知道在C#中用方括号[]表示属性标签,而在VB中用的是尖括号 。另外,如果要用名称结合传递参数,C#直接使用=号 , 而VB使用:=(冒号和等号) 。
4、委派类型 。委派类型就是安全的函数指针类型 。在C#中 , 难以分辨是函数指针在工作还是函数本身在工作 , 因为他们的语法相同 。当要为一个委派类型的变量复制的时候,直接等于一个函数即可 , 如:
public delegate void FuncType(Object e)
...
FuncType func;
func=new FuncType(this.SampleFunction1);
//调用
func(something);
//换指向另外一个函数
func=this.SampleFunction2
然而VB中,委派类型就像是一般的对象,有它的方法,与函数本身明显不同 。你不能将过程的名字直接赋给一个委派类型的对象,而必须使用AddressOf运算符,下面的例子就是上文C#程序的VB版,注意那些实现不同的地方:
Public Delegate Sub FuncType(ByVal eAs Object)
...
Dim func As FuncType
func=New FuncType(AddressOf Me.SampleFunc1)
‘调用
func.Invoke(something)
‘换指向另外一个函数
func=AddressOf Me.SampleFunction2
5、事件处理 。这是两种语言最大的差别之一,VB传承以前版本强大的事件处理机制,许多语法都比C#更加灵活 。好在无论什么情况 , 他们之间都是可以互相移植的 。
对于事件定义,两种语言都是一个委派类型加一个事件属性 , 如:
[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)
移植的时候 , 要把参数部分分离出来 , 成为一个委派类型,再按照普通方法定义事件即可 。
【vb.net与c的功能 vb与c#】关于事件响应,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
它表示myobj_MyEvent这个过程仅仅响应myobj.MyEvent这个过程 。如果一个过程要响应很多个事件,把他们列在Handles后面,用逗号隔开,如Handles Event1,Event2,...
遇到这种情况,要看清Handles后面的所有对象和事件,将它们一一改写成动态绑定的语句:
Protected Sub XXX(...)Handles myobj1.MyEvent,myobj2.MyEvent
==
myobj1.MyEvent =this.XXX;
myobj2.MyEvent =this.XXX;
...
protected void XXX(...){}
当事件比较多时,C#显著变得比较麻烦,幸好一个过程响应一大堆事件的情况也不太多(不过我就编写过一个过程相应8个事件,移植起来好麻烦?。?。原则上说,将静态事件过程移植为动态事件过程并没有完全遵守移植的规定,但我估计他们实现的原理不会相差太多,所以也不用担心 。
6、异常处理 。VB支持两种形式的异常,即.net框架的异常和VB自己的错误号码 。而C#只支持第一种 。用到VB自己的错误号码的程序几乎无法移植到C#中,所以应该尽量使用.net框架的异常,如下面VB语句:
Try
‘发生错误的代码
Catch When Err.Number=52
‘解决错误的代码
End Try
这段代码无法直接移植到C#中,只有用Exception对象取代Err对象获得异常信息,才能顺利移植 。另外VB的When语句带给Try语句十分灵活的用法,必须用很高的技巧才能在C#中实现 , 这就需要具体问题具体分析了 。
VB支持Exit Try语句,可以直接从Try块或Catch块跳转到Finally块 。C#没有提供类似的语法,可以用以下技巧:
[Visual Basic]
Try
‘一些语句
Exit Try
Finally
‘一些语句
End Try
[C#]
try
{
//一些语句
goto__leave;
}
finally
{
//一些语句
}
__leave://别忘了这里还有哦!
总之是利用了finally块无法跳过的特征,用goto语句模拟了Exit Try语句 。
如果VB程序用的是VB特有的On Error GoTo语句实现的错误处理 , 问题就麻烦了 。代码可能在过程中上下跳跃 , 无法预料语句的执行方式 。这种代码理解起来就头痛,更不要说移植了 。总体来说,把所有语句统统转移到try块中,然后用catch一一处理错误 。遇到要返回(Resume语句)的时候,只好Copy代码了 。反正不是一件容易的事情 , 慢慢改就是了 。
7、模块 。VB支持模块 , C#不支持 。但也没有关系 , 只要在C#中制造一个abstract类,共享所有成员,就和模块一样了 。当然不能像VB一样直接访问模块中的成员,需要用到“类名.成员名”的用法 。
8、接口 。C#在接口方面也没有VB强大(怎么这么重要的功能也不做得好一点?),VB采用Implements语句结合接口的成员和类的实现成员,而C#是用名称结合 。因此VB就可以随便修改实现成员的访问级别和名称,而C#就不能改名称 。将C#移植为VB时,最好利用VB.net编辑器直接实现接口 , 比较简单 。把VB移植为C#时,就必须把改过的名字都改回来,遇到名字冲突就更讨厌了(这时候我几乎不想再移植为C#了) 。给一个例子:
[Visual Basic]
Public Class Class1:Implements IMyInterface
Public Sub DoSth()Implements IMyInterface.Method1
End Sub
End Class
[C#]
public class Class1:IMyInterface
{
public void Method1()
{
}
}
9、运算符重载 。这会遇到VB头痛了,既然VB不支持运算符重载,那么就必须用子程序和函数来模拟运算符 。比如建立Plus和Minus方法模拟 和-的运算 。当然还是有很多情况(比如遇上了explicit和implicit语句)就真的没有办法了 , 只好不移植了 。运算符重载是一个很不错的功能,它能使很多操作简单地完成,如果VB支持它 , 就真的是完美语言了 。
VB.net 和C#.net 各有什么优缺点功能上vb.net与c的功能的考虑许多人认为C#vb.net与c的功能的功能比VB.net强大vb.net与c的功能,或者C#更加适合.net等 。其实这不是一两句话能比较清楚的 。C#的确有VB无法完成的功能,但VB也有C#无法完成的功能 。总的来说 , 对于.net开发,VB和C#没有任何差别 , 都100%兼容于CLS 。下面列出的是vb.net与c的功能他们语言功能上的不同,这些仅仅是语言实现上的问题,不会影响到生成的代码 。打*号的内容与CLS不兼容 。C#有而VB没有的功能vb.net与c的功能:1、 运算符重载 。*2、 不安全代码(指针和固定内存区) 。*3、 无符号整数 。*4、 移位运算 。VB有而C#没有的功能1、 即时编译 。2、 静态事件绑定 。3、 条件异常捕获 。4、 COM兼容类 。*5、 宽松的类型检查和变量声明 。6、 Visual Basic Runtime库 。7、 可选参数、带参数属性、模块等语言特征 。*8、 动态数组 。*
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和VC;C#与.NET有什么联系?VB.net和VC#.net在功能上没有区别 。编译以后生成的可执行文件被称为Assembly,即程序集 。
VB.net的版本号是Visual Basic 7.0,它的运行是建立在CLR(Common Language Runtime)和MSIL(Microsoft Intermediate Language)虚拟器上的 。其实,它的机制和Java差不多 。
2.vc是Windows平台上的C编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大 。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构 , 消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等 。
VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天 , 究其原因主要是大家对他错误的认识造成的,严格的来说VC不是门语言,虽然它和C之间有密切的关系,如果形象点比喻的话,可以C看作为一种”工业标准”,而VC则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的 。
VC应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式 , 传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识 , 笔者在这里还是以讲解WIN API的相关内容为主线 。
要想学习好VC必须具备良好的C/C的基础,必要的英语阅读能力也是必不可少的,因为大量的技术文档多以英文形式发布 。
3net是微软推出的一个平台,微软称它为:XML Web 服务平台 。它不是一种语言,C#是一种语言,在.net里面还有很多,像VB.net,C.net , J.net等,据说.net是微软的一个网络战略 。
关于vb.net与c的功能和vb与c#的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读