C# partial 说明

1. 什么是局部类型?

C# 2.0 引入了局部类型的概念。局部类型同意我们将一个类、结构或接口分成几个部分,分别实如今几个不同的.cs文件里。

局部类型适用于下面情况:

(1) 类型特别大,不宜放在一个文件里实现。

(2) 一个类型中的一部分代码为自己主动化工具生成的代码,不宜与我们自己编写的代码混合在一起。

(3) 须要多人合作编写一个类。

局部类型是一个纯语言层的编译处理,不影响不论什么运行机制——其实C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类。

public partial class Program

{

static void Main(string[] args)

{

}

}

partial class Program

{

public void Test()

{

}

}

2. 局部类型的限制

(1) 局部类型仅仅适用于类、接口、结构,不支持托付和枚举。

(2) 同一个类型的各个部分必须都有修饰符 partial。

(3) 使用局部类型时,一个类型的各个部分必须位于同样的命名空间中。

(4) 一个类型的各个部分必须被同一时候编译。

3. 局部类型的注意点

(1) keywordpartial是一个上下文keyword,仅仅有和 class、struct、interface 放在一起时才有keyword的含义。因此partial的引入不会影响现有代码中名称为partial的变量。

(2) 局部类型的各个部分通常是分开放在几个不同的.cs文件里,但C#编译器同意我们将他们放在同一文件里。

4. 局部类型的应用特性

在局部类型上的特性具有“累加”效应。

[Attribute1, Attribute2("Hello")]

partial class Class1{}

[Attribute3, Attribute2("Exit")]

partial class Class1{}

相当于

[Attribute1, Attribute2("Hello"), Attribute3, Attribute2("Exit")]

class Class1 {}

注:Attribute2属性同意在类上多次使用。

5. 局部类型上的修饰符

(1) 一个类型的各个部分上的訪问修饰符必须维持一致性。

(2) 假设一个类型有一个部分使用了abstract修饰符,那么整个类都将被视为抽象类。

(3) 假设一个类型有一个部分使用了 sealed 修饰符,那么整个类都将被视为密封类。

(4) 一个类的各个部分不能使用相互矛盾的修饰符,比方不能在一个部分上使用abstract,又在还有一个部分上使用sealed。

6. 局部类型的基类和接口

(1) 一个类型的各个部分上指定的基类必须一致。某个部分能够不指定基类,但假设指定,则必须同样。

(2) 局部类型上的接口具有“累加”效应。

partial class Class2: Iinterface1, Iinterface2 {}

partial class Class2: Iinterface3 {}

partial class Class2: Iinterface2 {}

相当于

class Class2: Iinterface1, Iinterface2, Iinterface3 {}

把全部的源码作为一个类型保存在一个单独的文件中是一个好的编程习惯,但有时候一个类型变得过于庞大以至于这样做成为一个不切实际的约束。此外,编程人员常常使用源码生成器来产生一个应用程序的初始结构,然后再改动产生的代码。不幸的是,当源码在将来某个时候再次公布时,已存在的改动就要被覆盖了。

Partial types同意把类,结构和接口打破为多个代码碎片存在不同的源码文件,以便于简化开发和维护。加之partial types同意机器产生的和用户编写的类型部分分离,这样就能够方便添加工具产生的代码。

Partial,是一个新的类型修饰符,在把一个类型定义在多个部分的时候使用。以下是一个partial class的演示样例,以两个部分实现。这两个部分可能在两个不同的源码文件,比方说第一个部分是由一个数据库映射工具产生的,而第二个部分是手工编写的。

public partial class Customer

{

private int id;

private string name;

private string address;

private 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;

private List<Order> orders;

public Customer() {

}

public void SubmitOrder(Order order) {

orders.Add(order);

}

public bool HasOutstandingOrders() {

return orders.Count > 0;

}

}

一个partial type的全部部分必须在一起编译,这样全部的部分才干在编译的时候整合在一起。特别的是partial types不同意增加已经编译好的类型。

C# partial 说明

时间: 2024-07-31 03:54:29

C# partial 说明的相关文章

c# partial 分部类和分部方法

一.partial 它是一个关键字修饰符.可以将类或结构.接口或方法的定义拆分到两个或更多个源文件中. 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来.修饰符不可用于委托或枚举声明中. 二.分部类 在以下几种情况下需要拆分类定义: 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理. 使用自动生成的源时,无需重新创建源文件便可将代码添加到类中. Visual Studio 在创建 Windows 窗体.Web 服务包装器代码等时都使用此方法.

Partial least squares regression(偏最小二乘法回归)

偏最小二乘法(PLS)是近年来发展起来的一种新的多元统计分析 http://en.wikipedia.org/wiki/Partial_least_squares_regression Partial least squares regression(偏最小二乘法回归),布布扣,bubuko.com

mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,

[[email protected] ok]# mysqldump -uemove -h xx.xx.xx.xx -P9906 DBname t_name -p >2t_tname.sqlWarning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the

asp.net mvc下使用Html.Partial嵌套页面(功能同等用户控件)

return View()相关简介 在asp.net mvc中返回View时使用的是ViewResult,它继承自ViewResultBase 同时它还有个兄弟PartialViewResult.一个用于返回整体,另一个返回局部(HTML) 使用相关 1.控制器书写:除最后改为 "return PartialView()" 其余无差别 2.视图书写:@Html.Partial() 具有四个重载.根据情况选用 @Html.Partial("CustomerListControl

HDU 5534 Partial Tree 完全背包

一棵树一共有2*(n-1)度,现在的任务就是将这些度分配到n个节点,使这n个节点的权值和最大. 思路:因为这是一棵树,所以每个节点的度数都是大于1的,所以事先给每个节点分配一度,答案 ans=f[1]*n 先将答案赋值 所以接下来研究的就是,将剩下的n-2个度分配 即分别看 分配度数为1到n-2的节点的有几个(因为每个节点已经有一度),然后因为每个节点都加上了权值f[1],所以这时f[2]=f[2]-f[1],以此类推, 看到这里,就是一个完全背包问题:如果还没看出来,详细一点 有1到n-2这些

C# partial 局部类型

关键字partial是一个上下文关键字,只有和 class.struct.interface 放在一起时才有关键字的含义.因此partial的引入不会影响现有代码中名称为partial的变量.局部类型的各个部分一般是分开放在几个不同的.cs文件中,但C#编译器允许我们将他们放在同一文件中. 局部类型的应用特性:在局部类型上的特性具有“累加”效应. [Attribute1, Attribute2("Hello")] partial class Class1{} [Attribute3,

2015ACM/ICPC亚洲区长春站 G hdu 5534 Partial Tree

Partial Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 228    Accepted Submission(s): 138 Problem Description In mathematics, and more specifically in graph theory, a tree is an undirect

Decidability and Partial Decidability

1. Decidability A predicate is decidable iff its characteristic function is computable, otherwise it is undecidable. An algorithm to compute the characteristic function of a decidable predicate is a decision procedure. Theorem. Problem 'x∈Wx' (i.e. Φ

EasyUI+LayOut+Partial=完美界面

一次偶然的机会让我接触到了UI系统,自然而然也开始学习和使用EasyUI和其他的一些关于界面的知识,趁今天这时间停下脚步好好整理整理最近用到的一些知识:easyUI .Layout.Partial  一.layout LayOut,所谓的布局页,也可以理解为母版页,母版页的性质和父类很相似,都具备了"子类"的共性,所以母版页可以理解为某些样式的一个父辈集合体.而它也就是将所有界面用到的公共样式整合到一起:比如将所有界面都用到的EasyUI引用进行整合: <span style=&

C# 类中隐藏基类方法和Partial

原文:C# 类中隐藏基类方法和Partial 今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸.虽然我是一个初学者,这无疑给我极大的学习动力.Fighting!!! 当一个类从父类继承了一个成员时,也就继承了它的执行代码,如果成员时虚拟的,我们可以用override重写这段执行代码.但无论他是否是虚拟的,都可以通过new 关键字来隐藏它.例如: public class BaseClass { public void DoSomething() { //