孙展波:实现.NET无限潜力

Realize .NET Potential (中文版)
随笔 - 417, 评论 - 12186, 引用 - 54

导航

关于

贴子以"现状"提供且没有任何担保也没有授予任何权利。
计数器(2005/12/8起).点击阅读我的Blog In English

标签

每月存档

最新留言

广告

 

ASP.NET 2.0和Avalon都使用了Partial Class. 这样用户的代码和工具生成的代码可以共同组成一个Class.对Partial Type的支持来自编译器. 4个要点如下:

  1. 我们把partial 叫做modifier而不是关键字.
  2. 同一类型在不同文件里面都需要使用partial
  3. 可以只在一个文件,两个文件,或者更多文件中使用partial
  4. 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.

 

贴子以"现状"提供且没有任何担保也没有授予任何权利。 (首次发布在11/11/2003)

打印 | 张贴于 2004-05-25 02:46:00 | Tag:C#

留言反馈

#转:c#编码规范 编辑
1.
2007-09-17 09:10:00 | [匿名用户:邓高建]
#C#编码建议 编辑
1.
2007-08-28 16:53:00 | [匿名用户:]
#C#编码规范 编辑
C#编码规范
2007-06-25 11:06:00 | [匿名用户:LeeLin]
#C#编码规范 编辑
C#编码规范
2007-06-25 11:05:00 | [匿名用户:LeeLin]
#55 编辑
5
2007-06-01 17:21:00 | [匿名用户:55]
#Partial Class 编辑
ASP.NET 2.0和Avalon都使用了Partial Class. 这样用户的代码和工具生成的代码可以共同组成一个Class.对Partial Type的支持来自编译器
2007-01-29 16:44:00 | [匿名用户:我心飞翔]
#C#编码规范 编辑
2007-01-08 21:39:00 | [匿名用户:Caviare]
#C#编码规范 编辑
C#编码规范
2006-11-16 21:13:00 | [匿名用户:烟台大苹果(wwweducn)]
#比较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: Partial Type 编辑
partial
2006-08-08 10:48:00 | [匿名用户:哈罗~好久不见~]
#C#编码规范【转】 编辑
C#编码规范 1.
2006-08-04 13:56:00 | [匿名用户:xmlsvg]
#C#编码规范 编辑
1.
2006-07-20 09:00:00 | [匿名用户:Steven.Dai]
#C#编码规范 编辑
Ping Back来自:blog.csdn.net
2005-02-23 09:37:00 | [匿名用户:tominsight]
#C#编码规范 编辑
Ping Back来自:blog.csdn.net
2005-01-26 18:41:00 | [匿名用户:gotoxqc]
#C#编码规范 编辑
Ping Back来自:blog.csdn.net
2005-01-17 00:30:00 | [匿名用户:sunsnow8]
#re: Partial Type 编辑
好功能~
2004-09-28 17:53:00 | [匿名用户:pyw]
#C#编码规范 编辑
Ping Back来自:blog.csdn.net
2004-08-26 10:15:00 | [匿名用户:sheercony]
#C#编码规范 编辑
Ping Back来自:t_jian的专栏
2004-08-09 19:45:00 | [匿名用户:t_jian]
#回复: Partial Type 编辑
如果partial class可以这样就好了:

public partial class Class1,Class2,Class3,Class4
{
public void AllClassHasThisMember()
{
}
}
或者
public partial class #ClassPartialTemplate1
{
public void AllClassHasThisMember()
{
}
}
public partial class Class1 : #ClassPartialTemplate1
{
}


...
2004-05-25 13:23:00 | [匿名用户:Lostinet]
#回复: Partial Type 编辑
还有对Tool更好的支持。
XAML及其Code Behinad, ASPX及其Code Behind可以使用partial成为一个Class.

没有partial, 就只有通过class inheritance来实现。
2004-05-25 11:11:00 | [匿名用户:孙展波]
#回复: Partial Type 编辑
我觉得那主要是给IDE隐藏代码用的,用了Partial Type以后,VB的窗体类简直和VB6一样“简洁”
2004-05-25 11:02:00 | [匿名用户:Ninputer]
#回复: Partial Type 编辑
好啊,partial Types是非常欢迎的new feature.
2004-05-25 10:49:00 | [匿名用户:孙展波]
#回复: Partial Type 编辑
既然你提到了Partial Types,那我下一篇VB2005的文章就写Partial Types了
2004-05-25 10:40:00 | [匿名用户:Ninputer]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.1.0