C# 2.0 Sepcification(三)

(接上)
19.4不完整类型
尽管在一个单一的文件中为一个类型维护所有的源代码是一个良好的编程实践,但有时,一个类型变得非常大,这将成为一个不切实际的限制。此外,程序员经常使用源代码生成器产生应用程序的初始结构,并且修改结果代码。遗憾的是,当源代码在将来被再次发射时,现存的修改将会被覆盖。

不完整类型(partial type)可以让类、结构和接口被拆分成多个部分存储在不同的源文件中,这更利于开发和维护。此外,不完整类型允许某些类型的机器生成的部分与用户编写的部分之间的分离,因此增加由工具产生的代码很容易。

当在多个部分中定义一个类型时,你可以使用一个新的类型修饰符partial。下面是一个不完整类的例子,它在两个部分中被实现。这两个部分可以在不同的源文件中,例如,因为第一个部分是通过一个数据库映射工具由机器生成的,第二个部分是由手工创建的。

public partial class Customer

{

private int id;

private string name;

private string address;

pivate List<Order> orders;

public Customer()

{

}

}

public partial class Customer

{

public void SubmitOrder(Order order)

{

orders.Add(order);

}

public bool HasOutstandingOrders()

{

return orders.Count>0;

}

}

当前面的两个部分一起编译时,其结果代码和被作为一个单一的单元而编写的类是一样的。

public class Customer

{

private int id;

private string name;

private string address;

pivate List<Order> orders;

public Customer()

{

}

public void SubmitOrder(Order order)

{

orders.Add(order);

}

public bool HasOutstandingOrders()

{

return orders.Count>0;

}

}

不完整类型的所有部分必须一起编译,这样各个部分在编译时就可以被融合到一起。特别需要注意的是的是,不完整类型不允许对已经被编译的类型进行扩展。

时间: 2024-10-28 05:00:40

C# 2.0 Sepcification(三)的相关文章

贪心算法-找出一个-1,0,1三值矩阵中的最大全1子块

问题描述 找出一个-1,0,1三值矩阵中的最大全1子块 并不要求子块仍为一个矩阵,但要求形状为凸多边形,可进行行列变换,只要求所求子块最大. 我的理解是:用贪心法找出一个连续的最全1块,再进行行列变换保证子块形状为凸. 数据量较大,文件形式给出.

vb6.0-用VB 6.0输入三个数,用逗号分开,并且对它们进行排序运算

问题描述 用VB 6.0输入三个数,用逗号分开,并且对它们进行排序运算 完整的写法怎么写? 用VB6.0输入三个数,用逗号分开,并且对它们进行排序运算 解决方案 dim s() as string s = split(inputbox(), ",") dim i(0 to 2) as long dim x as long for x = 0 to 2 i(x) = val(s(x)) next if i(0) > i(1) then t = i(0) : i(0) = i(1)

跟我一起学习ASP.NET 4.5 MVC4.0(三)

原文 http://www.cnblogs.com/xdotnet/archive/2012/03/07/aspnet_mvc40_validate.html 今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用.了解了这些就可以对MVC进一步认识,相信 很多人都对MVC中三个模块有一定的认识.今天我们主要来看一下Models模块,这个和我们三层里用的实体类有点相似,不同的是这里的属性需要添加一些 验证

ajax+asp.net2.0 sql2005三级联下拉框

一sql2005建立数数据库:create database Schoolgo use Schoolgo create table SchoolInfo(schoolId int IDENTITY(1,1)PRIMARY KEY,schoolName nvarchar(50))go create table DepartInfo(departId int IDENTITY(1,1)PRIMARY KEY,schoolId int,departName nvarchar(50))go create

C#3.0 Sepcification(中英文对照)

      C# Version 3.0 Specification September 2005 Notice 2005 Microsoft Corporation. All rights reserved. Microsoft, Windows, Visual Basic, Visual C#, and Visual C++ are either registered trademarks or trademarks of Microsoft Corporation in the U.S.A

C# 8.0的三个值得关注的新特性

C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高度耦合,这也有助于开发者更好的学习掌握 C#,并将其与 Visual Studio 以及 .NET 的使用结合起来.   加快 C# 版本的发布速度 在被称为"新微软"的推动下,微软创新的步伐也加快了.为了做到加快步伐,微软开发部门将一些过去集成在一起的技术现在都分离了出来. Visual

Virtustream发布xStream 2.0提供三种云模式服务

Virtustream公布了xStream 2.0,它是一个私有云方案.目的是在私有云.公有云和混合云中提供安全.高效的企业级云基础设施服务. Virtustream表示,软件是可用的.独立的设备和一个管理服务,xStream有助于更好的管理云计算上的关键任务.这些部署可能选择一个定制的混合现场私有云并结合公共云计算和虚拟私有云计算. 现在xStream 2.0还是测试版,正式版会在8月份发布: •允许企业控制他们的IT基础设施作为一个单独的云,结合现场私有云装置外虚拟私有云/公有云和管理云服务

CGI安全漏洞资料速查 v1.0(转三)

cgi|安全|安全漏洞 51 类型: 攻击型 名字: search97.vts 风险等级: 中 描述: 这个文件将能使入侵者任意的读取你系统中启动httpd用户能读取的文件 建议: 将在您Web目录中的search97.vts删除或移走 解决方法: 将在您Web目录中的search97.vts删除或移走,或前往以下地址下载Patchhttps://customers.verity.com/products/server/310/patches/ _________________________

如何在c#中使用mapx5.0(三)

接下来: //****************************** #region 文件/打开*另存为*导出*按钮的代码 private void menuItem20_Click(object sender, System.EventArgs e) //打开地图文件(*.gst)(模式对话框) { OpenFileDialog openFD=new OpenFileDialog(); openFD.Title="打开地图"; // openFD.DefaultExt=&quo