网页功能: 加入收藏 设为首页 网站搜索  
VB.Net交叉语言的继承
发表日期:2003-04-24作者:[] 出处:  

VB.NET可以创建处理代码,这些处理代码是运行在.NET框架上的。所有的管理代码可以和其它类型的处理代码交互作用,而不管我们是用什么编程语言来创建这些组件的。这就意味着我们可以在一种编程语言上创建一个类,然后应用到另外的编程语言中,当然也包括继承。这正式交叉语言混继承的混合编程机理。

实际上,现在有许多程序涉及人员已经在应用这个技术了。许多的.NET系统类库是在C#上编写的,而我们在VB.NET上编写程序的时候,可以继承这些类作为基类。

创建VB.NET基类

举个例子,我们可以在VB.NET创建一个类库工程取名为vblib并且增加一个简单的类为Parent,代码如下:

Public Class Parent

Public Sub DoSomething()

MsgBox(Parent DoSomething, MsgBoxStyle.Information, Parent)

End Sub

End Class

利用这个基类我们可以在C#上创建一个子类。

创建C#子类

我们可以增加一个新类库工程,具体做法是使用菜单File(文件)->Add Project(增加工程)并将它命名为cslib。接着通过选择菜单Project(工程)->Add Reference(增加引用)来增加一个引用到vblib工程。

当我们在IDE中直接引用这个工程的时候,我们不需要VB.NET的源代码。相反地,我们可以先创建vblib工程,再创建一个组件,接着从C#工程中引用这个组件来得到访问基类的目的,代码如下:

namespace cslib

{

using System.WinForms;

using vblib;

public class csclass : Parent

{

public csclass()

{

Messagebox.Show(csclass constructor);

}

}

}

以上这个C#代码共享了VB.NET中的代码。但是,C#的语法很大程度上来自C和C++语言,所以编程会变得复杂一点。所有的代码语句的最后要以分号(;)结束,并且利用左右括号({和})来定义一个块结构。而在VB.NET中定义一个块结构是利用Sub...End Sub语句,这正是VB.NET和C#语法上的一个差别,所以在利用VB.NET和C#混合编程的时候一定要注意到语法的差别。

我们还是仔细体会体会上面的代码吧。代码的第一行是为文件定义了名空间(namespace)。在C#中所有的名空间是显式定义在每一个代码模块中的:

namespace cslib

在C#中的using关键字等价于在VB.NET中的Imports关键字。因为我们要使用System.WinForms和来自vblib的名空间,所以我们使用以下的语句来引入这些名空间:

using System.WinForms;

using vblib;

代码接下去的一行是声明我们要创建的类以及表明这个类是Parent的一个子类:

public class csclass : Parent

在C#中一个子类是通过定义一个类来定义的,具体语法是类名之后加冒号(:),然后再加基类。这条语句等价于如下VB.NET的代码:

Public Class csclass

Inherits Parent

在VB.NET中构造函数是通过使用保留的方法New来创建的。而在C#中构造函数是使用类名作为方法的名字来创建的,例如:

public csclass()

{

Messagebox.Show(csclass constructor);

}

在C#中,大括号({和})定义一个块结构,而在这个块结构中我们可以放置方法的代码。在这个例子中的方法很简单,只是显示一个对话框来指示构造函数被调用了而已。

至此我们就可以为新工程创建客户代码了。

创建客户应用程序

首先可以使用菜单File(文件)->Add Project(增加工程)来增加一个新的VB.NET 的Windows应用程序工程。在这个新工程可以选择菜单项Project(工程)->Add Reference(增加引用)来为cslib工程增加一个引用。在工程中点击鼠标右键并从弹出的菜单中选择Set As Startup Project选项,这样做的目的是当你按下F5快捷键的时候工程就运行。

这里值得注意的是,vblib工程没有任何的引用,这是因为我们没有直接使用来自组件的任何代码。所有的客户应用程序所关心的是cslib工程。

当我们在IDE中直接引用cslib工程的时候,我们不需要C#代码。相反地,我们可以先创建cslib工程,再创建一个组件,接着引用来自客户工程的组件以访问我们的测试C#类。

接着我们还要增加一个按钮到窗体中,并为该按钮编写以下的代码:

Protected Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs)

Dim obj As New cslib.csclass()

obj.DoSomething()

End Sub

虽然创建一个VB.NET的子类也是没什么差别的,但是在本例子中我们是使用了不同的编程语言来实现的。其中的差别大家仔细体会,相信会对你有所帮助。

好了,当我们运行应用程序并点击按钮的时候,我们就可以看到一个对话框,对话框上面显示了我们所调用的csclass的构造函数;以及另外一个对话框,其上面显示了我们所调用的VB.NET基类的DoSomething方法。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 VB.Net交叉语言的继承
本类热点文章
  VB.Net常用语法
  VB.Net常用语法
  VB2005语言新功能
  Visual Basic 9.0 前沿播报·动态篇(三..
  全面剖析VB.NET
  全面剖析VB.NET
  连接SQL SERVER的公共类(VB.NET)
  连接SQL SERVER的公共类(VB.NET)
  如何用VB.Net创建一个三层的数据库应用..
  如何用VB.Net创建一个三层的数据库应用..
  VB.Net的继承
  VB.Net的继承
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2021 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00728