Partial Class

    技术2022-05-11  75

    转自: http://blog.joycode.com/zhanbos/archive/2004/05/25/22402.aspx ASP.NET 2.0和Avalon都使用了Partial Class. 这样用户的代码和工具生成的代码可以共同组成一个Class.对Partial Type的支持来自编译器. 4个要点如下: 我们把partial 叫做modifier而不是关键字. 同一类型在不同文件里面都需要使用partial 可以只在一个文件,两个文件,或者更多文件中使用partial Base class只需要声明一次;若多次声明必需完全一致. 例子:Contact1.cs using  System;  namespace  Realize.Net.Potential.Sample1  {   public partial class Contact   {     public Contact(string firstName, string lastName)     {       this.firstName = firstName;       this.lastName = lastName;     }     int partial = 0;     private void PartialIsNotAKeyword()     {       partial++;     }   }   public partial class AdvancedContact: Contact   {     public AdvancedContact(string firstName, string lastName, string address) : base(firstName, lastName)     {       this.address = address;     }   } }   Contact2.cs using  System;  namespace  Realize.Net.Potential.Sample1  {   public partial class Contact   {     string firstName;     string lastName;   } }   Contact3.cs using  System;  namespace  Realize.Net.Potential.Sample1  {   public partial class Contact   {     public virtual string Name     {       get return firstName + " " + lastName; }     }   }   public partial class AdvancedContact   {     string address;     public override string Name     {       get       {         return base.Name + " at " + address;       }     }   } }  

    MainFun.cs

    using  System;  namespace  Realize.Net.Potential.Sample1  {   public class MainFunc   {     [STAThread]     static int Main (string[] args)     {       Contact contact = new Contact("Zhanbo""Sun");       Console.WriteLine(contact.Name);       AdvancedContact advContact = new AdvancedContact("Zhanbo""Sun"" 1 Microsoft Way ");       Console.WriteLine(advContact.Name);       return 0;     }   } }  

     

    To Compile: csc /out:MySample1.exe /t:exe *.cs   深入了解Generics, iterators, anonymous methods, and partial classes的最佳读本就是更新的 C#2.0Specification.  

    最新回复(0)