装配中的脑袋

用程序装配大脑,再用大脑装配程序
随笔 - 118, 评论 - 1214, 引用 - 11

导航

工具

关于

如果想发较大的信件,请用Ninputer @ gmail.com

不要在我的Blog评论中张贴广告,除非同意向我付款。

标签

每月存档

广告



访客

 

不完全类型(Partial Types)的概念首先源于将同一个类分布在多个文件中完成的需求。以前,类或结构必须在同一个文件中完成,当类型变得很大,或许多开发人员需要同时开发一个类型时,这种一个文件的缺点就越来越明显了。Visual Basic 2005允许在多个文件中储存一个类型的“Partial”,这些不完全类型能在编译时组成一个完整的类型。这种技术还可以用于分离IDE自动生成的代码及用户书写的代码,以及孙展波提到的,在ASP.NET和Avalon中分离工具生成的代码及用户书写的代码。

Visual Basic 2005的不完全类型的语法与C#不太一样,其主要特点是:

1、Partial是关键字。C#受限于ECMA的标准,不能任意添加关键字,因此像partial或yield等均不是关键字。而Visual Basic不受标准限制,Partial是作为关键字出现的,不能用作标识符。

2、只有类或结构可以有Partial类型,模块是不能Partial的。

3、一个类的所有Partial类型的定义中,有一个可以不加Partial关键字。当使用Partial关键字时,IDE会自动提示扩写哪个类型:

4、在各个Partial类型上定义的修饰符、Attributes、继承和实现接口是叠加关系,比如一个MustInherit Class A和一个Partial Friend Class A在一起,就会形成一个Friend MustInherit Class A。当然这些修饰不能互相冲突,一个是Public而另一个是Private可不行。

5、在一个Partial类型上声明实现的接口可以在另外一个Partial中实现,一个Partial上声明继承的类的成员也可以在其他Partial中重写。任何时候在任何一个Partial类型中,感觉都同一个完整的类型内部没有区别。

6、Partial类型中定义的嵌套类型也可以写成Partial类型。

下面的例子展示了Partial Type的多种用法

Friend Class Class2
    Inherits Class1

    'MustOverride需要类型定义为MustInherit
    '该修饰符在另外一个Partial定义上

    Public MustOverride Sub Test()

    Public Function Clone() As Object _
        Implements System.ICloneable.Clone

        '实现另外一个Partial中书写的接口
    End Function


    Partial Class IntClass '内部定义的嵌套类也可以Partial

    End Class
End Class


'另一个文件中
Partial MustInherit Class Class2
    Implements ICloneable

    Public Overrides Sub Test1()
        '重写另外一个Partial中继承类的方法
    End Sub

    Public Class IntClass '内部定义的嵌套类也可以Partial

    End Class
End Class

Visual Basic 2005和Visual C# 2005现在都采用不完全类型来储存IDE生成的窗体代码。将自动生成的代码放到一个FormXX.Designer.vb中,这样窗体类就比以前采用Region折叠的方式更加简洁,同时更能够防止用户无意中修改自动生成的代码。


随贴广告(测试期)
相关文章

打印 | 张贴于 2004-05-25 13:40:00 | Tag:技术随笔  Visual Basic 2005 新功能点评

留言反馈

比较ASP.NET1.x的Code Behind和ASP.NET2.0的Code Beside 编辑
比较ASP.NET1.x的Code Behind和ASP.NET2.0的Code Beside
2006-09-28 21:44:00 | [匿名用户:antyi]
re: Visual Basic 2005新功能点评(四)——不完全类型 编辑
我试了一下,是可以在Form1.vb里写Sub New的,我原来忘了加这两句了,真歹势呀!
MyBase.New()
InitializeComponent()
2004-12-25 20:17:00 | [匿名用户:疯牛涕淌]
re: Visual Basic 2005新功能点评(四)——不完全类型 编辑
可惜没有得下载,现在唯一可以下载的就是VS.net2003,谁知道在单独的版本可以下载吗
2004-09-19 06:40:00 | [匿名用户:VB爱好者]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
不错
2004-07-04 17:53:00 | [匿名用户:leo]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
谁能告诉我哪里有高速下载版本?
2004-05-25 19:09:00 | [匿名用户:unruledboy]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
@zjh135
只是解释VB与C#的不同,别无它意
2004-05-25 16:47:00 | [匿名用户:Ninputer]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
C#受限于ECMA的标准,这与VBNET功能的增加有什么关系呢?
2004-05-25 16:20:00 | [匿名用户:zjh135]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
kanbudong
2004-05-25 16:13:00 | [匿名用户:xia]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
第三个文件中,什么意思?写两个一样的过程VB会给出编译错误,好像与用不用Partial无关。
2004-05-25 15:47:00 | [匿名用户:Ninputer]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
我没down到这个版本,没法实验,所以想问问:
如果在第三个文件里面定义Public Overrides Sub Test1(),VBC.exe看到了会不会疯掉啊?还是理智地告诉我:“你Y写错了!”?
2004-05-25 14:24:00 | [匿名用户:rIPPER]
回复: Visual Basic 2005新功能点评(四)——不完全类型 编辑
VB.NET越来越强大了灵活了
2004-05-25 13:48:00 | [匿名用户:unruledboy]
博客主人设置本博客不允许匿名用户发表言论,请登录后再试

Powered by: Joycode MVC Blogger System