TOC

This article is currently in the process of being translated into Chinese (~91% done).

类 :

Partial Classes

使用过C#,或其它编程语言的人都熟知类名称必需唯一的事实 - 在同一名空间内不允许有两个名称相同的类。不过,微软通过引入某种叫做拆分类的东西,试图在某个程度上改变这一点。

当使用partial关键字定义类时,不同的人可以使用其它的类来扩展这个类的功能,这些其它的类也需要使用partial来定义。这样做在这些情况下很有用:

  • 当类的规模非常大时 - 可以把类拆分为多个文件,使得针对此类的不同部分进行编码更方便。比如,可以把所有的属性放在一个文件,所有方法放在另一个文件,但它们仍然一同一个类。
  • 当使用Visual Studio这样的设计工具 - 比如设计Winforms时,就可以用一个文件来放所有自动生成的设计代码,而用另一个文件来放程序员编写的代码。

下面用例子来进行说明。此项目有一个命令行程序中常见的Program.cs文件。此外还有两个文件:PartialClass1.cs和PartialClass2.cs。这是这两个文件及其内容:

PartialClass1.cs 文件

using System;

namespace PartialClasses
{
    public partial class PartialClass
    {
public void HelloWorld()
{
    Console.WriteLine("Hello, world!");
}
    }
}

PartialClass2.cs 文件

using System;

namespace PartialClasses
{
    public partial class PartialClass
    {
public void HelloUniverse()
{
    Console.WriteLine("Hello, universe!");
}
    }
}

注意两个文件中都使用partial关键字来定义了一个同名类。还有它们各自还分别定义了一个方法 - HelloWorld()和HelloUniverse()。在Program.cs中可以象使用其它正常用一个文件定义的类一样使用这个类:

using System;

namespace PartialClasses
{
    class Program
    {
static void Main(string[] args)
{
    PartialClass pc = new PartialClass();
    pc.HelloWorld();
    pc.HelloUniverse();
}
    }
}

总结

使用partial类可以把类拆分到多个文件中,这可能是因为类规模过大而进行的拆分,也可能是程序员使用的Visual Studio这样的设计工具需要的拆分。


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!