一、      静态类-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)-静态类,分部类的更多相关文章

  1. [C#学习笔记]分部类和分部方法

    知识在于积累. 前言 好久没写博客了,因为在看<CLR via C#>的时候,竟然卡在了分部方法这一小节几天没下去.今天重新认真阅读,有些感悟,所以在此记录. 然后. 每天早晨第一句,&l ...

  2. 分部类(partial)

    一般来说,一个类.结构或接口位于一个源文件中,但某些情况,比如大型项目.特殊部署时,可能需要把一个类.结构或接口放在几个文件中来处理.等到编译时,自动把它们合起来,这就得应用 C# 分部类了. C# ...

  3. C# 分部类与分部方法

    一.定义 分部方法是指能够使编码人员跨多个代码文件实现类型的语法.简而言之.它可以让我们在一个文件中构建方法原型,而在另一个文件中实现 使用分部方法和分部类需要使用关键词partial,且紧靠在cla ...

  4. c#中分布方法和分部类

    将同一个类编写在多个文件中,类的各个文件名不同,类名相同,类名前加partial关键字,这种类型叫分部类. 在分部类中可以建立分部方法,方法名前加关键字partial,分部方法只能将方法分成两部分,即 ...

  5. C# partial修饰符_分部类_分部方法

    今天翻了翻书,发现自己还是遗留下不少基础性的东西,老实说,不管一些基础的东西用到不用到都很应该了解,因为基础毕竟学习量不是很大. 一.分部类 什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多 ...

  6. c# partial 分部类和分部方法

    一.partial 它是一个关键字修饰符.可以将类或结构.接口或方法的定义拆分到两个或更多个源文件中. 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来.修饰符不可用于委托或枚 ...

  7. 分部类,分部方法 - 修饰符partial

    一.分部类 什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多个源文件中,每个源文件只包含类型定义的一部分. 当使用自动生成的源时,无须重新创建源文件便可将代码添加到类中.Visual Stu ...

  8. 【C#】 增加多个分部类

    有时需要在一个类下面增加多个不同功能的分部类,或者是不同开发组员以其命名的分部类. eg: 首先创建一个类,改为分部类,partial.. 复制此类的文件,改一个文件名.然后修改项目文件.csproj ...

  9. C#综合揭秘——分部类和分部方法

    在面向对象的“封装闭合性”开发原则中,一向提倡的是把独立的功能封装在一个类里面的!但从Visual Studio 2005开发,系统提供了一个分部类的开发方式一直受到争议,很多人认为把同一类的功能分布 ...

随机推荐

  1. HTML 5 <input> placeholder 属性

    原文链接:http://www.w3school.com.cn/html5/att_input_placeholder.asp HTML 5 <input> placeholder 属性 ...

  2. XSS Filter绕过

    之前挖到某金融网站的xss 但是困于xss filter无奈不好下手.只能在火狐下弹窗. 以下该图是我的测试. 后来发给一个Invoker哥们儿.成功给我发来payload成功绕过了XSS Filte ...

  3. 【转】【编码】ANSI,ASCII,Unicode,UTF8之一

          不同的国家和地区制定了不同的标准,由此产生了 GB2312.GBK.GB18030.Big5.Shift_JIS 等各自的编码标准.这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称 ...

  4. 应用HTK搭建语音拨号系统3:创建绑定状态的三音素HMM模型

    选自:http://maotong.blog.hexun.com/6261873_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...

  5. PageImpl是不是有问题?

    pageable.getOffset() + content.size() : total这个API 感觉没有实现该有的功能!!!

  6. 解决IDEA自动重置LanguageLevel和JavaCompiler版本的问题

    使用IDEA时,导入的Maven项目默认的LanguageLevel和JavaCompiler都是1.5,1.5的情况下连最简单的@Override注解都不支持,所以项目可能出现一堆错. 虽然在项目上 ...

  7. 转:C++编程隐蔽错误:error C2533: 构造函数不能有返回类型

    C++编程隐蔽错误:error C2533: 构造函数不能有返回类型 今天在编写类的时候,出现的错误. 提示一个类的构造函数不能够有返回类型.在cpp文件里,该构造函数定义处并没有返回类型.在头文件里 ...

  8. Java GUI学习笔记之初识AWT和Swing

    Frame f = new Frame(); //获取显示器的尺寸 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize() ...

  9. Qt 常用的功能

    1.程序重启 void Widget::reStart() {   qApp->closeAllWindows(); QProcess::startDetached(qApp->appli ...

  10. Solr集群常用的操作总结

    之前搭建过SolrCloud和Solr单机版本,另外还有很多对Solr配置文件以及核心的操作,以下主要总结Solr集群中的常用操作,即在配置文件中正确设置ZK_HOST参数并且Zookeeper正确启 ...