科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件体验Visual Studio 2005之局部类型

体验Visual Studio 2005之局部类型

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

当然这些新特性给我们带来的远不止简洁明快的代码

作者:xamcsdn2 来源:csdn 2007年11月13日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
察看两个环境下Form1的代码文件 Form1.cs文件里对Form1的代码差别很大,2005中只有那么一点点,对button1的定义没有,Click事件委托也没有只有一个button1_Click()显然是有问题的。如果而且我们很快发现Class Form1是被定义成 partial 的也就是C# 2.0种的新的语言特征 局部类型。然后我们再点一下2005 IDE 解决方案资源管理器上的Show All Files按钮,会发现Form1.cs下多了个文件 Form1.Designer.cs 这是2003环境下是没有的, 察看该文件我们会发现对Class Form1的另一部份定义。

partial class Form1
{
 /// <summary>
 /// Required designer variable.
 /// </summary>
 private System.ComponentModel.IContainer components = null;

 /// <summary>
 /// Clean up any resources being used.
 /// </summary>
 protected override void Dispose(bool disposing)
 {
  if (disposing && (components != null))
  {
   components.Dispose();
  }
  base.Dispose(disposing);
 }

 #region Windows Form Designer generated code

 /// <summary>
 /// Required method for Designer support - do not modify
 /// the contents of this method with the code editor.
 /// </summary>
 private void InitializeComponent()
 {
  this.button1 = new System.Windows.Forms.Button();
  this.SuspendLayout();
  //
  // button1
  //
  this.button1.Location = new System.Drawing.Point(75, 49);
  this.button1.Name = "button1";
  this.button1.Size = new System.Drawing.Size(96, 46);
  this.button1.TabIndex = 0;
  this.button1.Text = "button1";
  this.button1.Click += new System.EventHandler(this.button1_Click);
  //
  // Form1
  //
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(292, 273);
  this.Controls.Add(this.button1);
  this.Name = "Form1";
  this.Text = "Form1";
  this.ResumeLayout(false);

 }

 #endregion

 private System.Windows.Forms.Button button1;
}

  现在好像2005对Form1的描述好像全了,2005中Form1.cs 和 Form1.Designer.cs 两个文件中对Class Form1的描述相加就是 2003 Form1.cs 中对Class Form1的描述。由此看来 partial 类型可以使我们把对某个类的描述写在不同地方,甚至写到两个或多个不同的文件中去。partial 信息只对编译器有用,编译器在编译时看到对某个类的描述是“碎”的(partial 的),它会去其他地方收集该类的其他碎片,然后把所有的该类的碎片组合成完整的一个类,再对其编译。所以partial 体现不到编译好的 IL中去的。至于partial类型给我们带来怎么样的意义呢?我们以后再讨论。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章