CLR via C#(07)-静态类,分部类
一、 静态类-Static
静态类是一些不能实例化的类,它的作用是将一些相关的成员组合到一起,像我们常见的Math, Console等。静态类由static关键字标识,静态类成员也只能是static类型。Static关键字只能用于修饰类,不能修饰值类型。
C#编译器对静态类的限制:
1. 基类只能为System.Object。
因为继承是针对对象而言的,静态类不能创建实例,所以从其他类派生没有实际意义。
2. 静态类不能实现接口。
3. 静态类的成员只能为static类型,可以定义静态的方法,属性,事件等。
public static class StaticClass
{
private static string _name;
public static string Name
{
get { return _name; }
set { _name = value; }
}
}
在ILDASM.exe中查看,我们会看到该静态类被编译器同时标记为abstract和sealed。而且,可以看到静态类不会产生默认的.ctor实例构造器。
4. 静态类不能用作局部变量、字段、方法的参数等。因为它们都需要引用一个实例。
二、 分部类、结构、接口-Partial
对于partial关键字我们并不陌生,比如在web form的code-behind模式就经常看到这个关键字。它可以应用于类、结构或者接口,告诉编译器分散到多个中的源代码其实是同一个类、结构或接口。
分部类型Partial其实是由编译器提供的,CLR对此并不知情。所以编译器编译后要将相应代码合并后生成一个类型。因此,几个分部类的源代码文件都要使用同一种编程语言。
分部方式的用处?
1. 源代码管理
在使用TFS等进行源代码控制时,如果几个程序员同时修改一个文件,还要进行merge操作。如果使用Partial关键字,可以将类的代码分散到多个文件中去,使多人方便的同时编辑。
2. 代码拆分
在使用vs设计窗体时,设计器生成的文件和具体的功能代码是分离的,提高了开发效率,防止误操作。
3. 将类或结构分解成独立的逻辑单元
如果一个类提供许多复杂的功能,我们可以在源代码中使用分部类,将不同逻辑单元使用分部类拆分开来。这样当我们想从类中去除一个功能模块时也会变得比较容易操作。
对于分部类,其实实际开发中还没有特意用过,以后遇到上面说的这种情况的时候,可以考虑一下。
CLR via C#(07)-静态类,分部类的更多相关文章
- [C#学习笔记]分部类和分部方法
知识在于积累. 前言 好久没写博客了,因为在看<CLR via C#>的时候,竟然卡在了分部方法这一小节几天没下去.今天重新认真阅读,有些感悟,所以在此记录. 然后. 每天早晨第一句,&l ...
- 分部类(partial)
一般来说,一个类.结构或接口位于一个源文件中,但某些情况,比如大型项目.特殊部署时,可能需要把一个类.结构或接口放在几个文件中来处理.等到编译时,自动把它们合起来,这就得应用 C# 分部类了. C# ...
- C# 分部类与分部方法
一.定义 分部方法是指能够使编码人员跨多个代码文件实现类型的语法.简而言之.它可以让我们在一个文件中构建方法原型,而在另一个文件中实现 使用分部方法和分部类需要使用关键词partial,且紧靠在cla ...
- c#中分布方法和分部类
将同一个类编写在多个文件中,类的各个文件名不同,类名相同,类名前加partial关键字,这种类型叫分部类. 在分部类中可以建立分部方法,方法名前加关键字partial,分部方法只能将方法分成两部分,即 ...
- C# partial修饰符_分部类_分部方法
今天翻了翻书,发现自己还是遗留下不少基础性的东西,老实说,不管一些基础的东西用到不用到都很应该了解,因为基础毕竟学习量不是很大. 一.分部类 什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多 ...
- c# partial 分部类和分部方法
一.partial 它是一个关键字修饰符.可以将类或结构.接口或方法的定义拆分到两个或更多个源文件中. 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来.修饰符不可用于委托或枚 ...
- 分部类,分部方法 - 修饰符partial
一.分部类 什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多个源文件中,每个源文件只包含类型定义的一部分. 当使用自动生成的源时,无须重新创建源文件便可将代码添加到类中.Visual Stu ...
- 【C#】 增加多个分部类
有时需要在一个类下面增加多个不同功能的分部类,或者是不同开发组员以其命名的分部类. eg: 首先创建一个类,改为分部类,partial.. 复制此类的文件,改一个文件名.然后修改项目文件.csproj ...
- C#综合揭秘——分部类和分部方法
在面向对象的“封装闭合性”开发原则中,一向提倡的是把独立的功能封装在一个类里面的!但从Visual Studio 2005开发,系统提供了一个分部类的开发方式一直受到争议,很多人认为把同一类的功能分布 ...
随机推荐
- 简述JavaScript函数节流
为什么要用函数节流 浏览器中某些计算和处理要比其他的昂贵很多.例如,DOM 操作比起非 DOM 交互需要更多的内存和 CPU 时间.连续尝试进行过多的 DOM 相关操作可能会导致浏览器挂起,有时候甚至 ...
- jquery版悬浮模块demo
在做在线客服时,代码就是按照该模块命名.现在,我要添加一个返回主页的功能,我觉得再复制一遍之前的代码,那个量有点多,如果我再添加一个功能,那个量会很多……现在我用创建对象字面量的方式来创建(其实我还想 ...
- OpenCV成长之路(10):视频的处理
视频中包含的信息量要远远大于图片,对视频的处理分析也越来越成为计算机视觉的主流,而本质上视频是由一帧帧的图像组成,所以视频处理最终还是要归结于图像处理,但在视频处理中,有更多的时间维的信息可以利用.本 ...
- (转)Singleton 单例模式(懒汉方式和饿汉方式)
原文地址:http://www.cnblogs.com/kkgreen/archive/2011/09/05/2166868.html 单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某 ...
- (转载)XML解析之-XStream解析
转载来源:http://hwy584624785.iteye.com/blog/1168680 本例使用XStream生成一个xml文件,再发序列化xml文件内容. XStream是一个简单的类库,可 ...
- dropify插件的字符串
1.可以拖拽图片进行上传. 2.使用起来方便. 3.不能进行视频与其他文件的上传,只能上传图片. 4.其余都像普通<input type="file">. 5.在dro ...
- 4.7---最近公共祖先(CC150)
import java.util.*; public class LCA { public static int getLCA(int a, int b){ if(a < 1 || b < ...
- apache virtualhost 针对ip开放访问
http://serverfault.com/questions/246003/apache-httpd-how-can-i-deny-from-all-allow-from-subnet-but-d ...
- 在sublime-text中设置浏览器预览
配置在Chrome,Firefox中打开 安装 SideBarEnhancements 然后通过ctrl + k, ctrl + b打开侧边栏,在侧边栏的文件中右击,找到 open width -&g ...
- SQLServer:FUNCTION/CURSOR/PROCEDURE/TRIGGER
一.FUNCTION:在sqlserver2008中有3中自定义函数:标量函数/内联表值函数/多语句表值函数,首先总结下他们语法的异同点:同点:1.创建定义是一样的: ...