C#学习笔记类和结构体

原创 2016年08月31日 15:13:39

一、类

类的修饰符
- 无或者internal:只能在同一程序集访问类
- public:同一程序集或者引用该程序集的其他程序集都可以访问
- (internal) abstract:只能在同一程序集访问类,该类不能被实例化,只能被继承
- public abstract:不能被实例化,只能别继承,引用改程序的其他程序集可以使用
- (internal) sealed:只能在同一程序集访问类,该类不能被继承,只能被实例化
- public sealed:不能被继承,只能被实例化,引用改程序的其他程序可以访问类

类的成员修饰符
- public:同一程序集或者引用该程序集的其他程序都可以访问
- private:只能在同一个类中访问
- protected:只能在同一个类或者派生类访问
- internal:只有同一程序集可以访问
- protected internal:同一程序集,该类和派生类中可以访问

static变量只能用类名进行访问,不能用对象去访问
const类型默认是静态类型的,也只能通过类名去访问

构造函数
单例类的创建需要使用私有构造函数

静态构造函数:除了实例构造函数之外,静态构造函数用于初始化类中的静态成员,在创建第一个实例或者引用任何静态成员之前,CLR都会自动调用静态构造函数。 (静态构造函数不会覆盖默认无参构造函数)
静态构造函数特点:
1.静态构造函数不能使用任何访问修饰符
2.静态构造函数不能带有任何参数
3.静态构造函数只会执行一次
4.不能直接调用静态构造函数
5.程序员无法直接控制静态构造函数调用时机
析构函数
只有在C#中嵌套了其他语言的时候,才会用到析构函数,其他情况都不会用到,因为C#里面的内存是自动管理的。C#中在堆上开辟的内存释放会自动调用基类的Finalize()方法。
注意:1、不能在结构体中定义析构函数,只能在类中
2、一个类只能有一个
3、无法继承或者重载析构函数
4、无法显示的调用析构函数,由垃圾回收器自动调用
5、析构函数即没有修饰符也没有参数
索引器
当一个类包含数组成员时,使用索引器相当于C++里面的下标运算符重载
[修饰符] 数据类型 this [索引类型 index] {
get{}
set{}
}

C#中只有单继承没有多继承,静态类没有继承
子类的初始化顺序:子类实例字段,基类构造函数,子类构造函数
多态
virtual可以修饰方法,索引器和字段,在子类里面可以使用它override进行重写。
在实际开发中,若确实需要添加某个方法,但是该方法又是基类的同名方法,那么可以使用new关键字把基类成员方法隐藏。

二、结构体

1、实例构造函数
有一个没有参数的构造函数,还会一直存在,不允许被删除和重定义,不会因为定义其他的带参数的构造函数而消失。
2、静态构造函数
特点:1、不能有访问修饰符和参数;2、不能访问实例成员;3、无法直接进行调用
被调用的两种情况:1、使用显示声明的构造函数进行初始化,使用默认构造函数初始化不会调用;2、使用结构的方法或者访问结构的静态数据成员(访问实例成员不会触发)
3、结构体的多态和可继承性
结构体是隐式密封的,不能作为基机构派生其他的结构;不能从类派生,可以从接口继承;
特点:1、隐式密封,不能使用sealed和abstract关键字;2、因为不能作为基类,成员不能使用有关protected的修饰符;3、结构体成员函数不能声明为abstract和virtual,可以使用override,用来覆盖它的基类System.ValueType中的方法
4、结构体和类的对比
结构体个类的对比

版权声明:本文为博主原创文章,未经博主允许不得转载。

C#嵌套类的使用方法及特性

转自: http://blog.csdn.net/luqizheng/article/details/1965220  嵌套类(Nested Class)是在类中定义的类。以下把拥有内嵌类的类称...
  • hemeinvyiqiluoben
  • hemeinvyiqiluoben
  • 2015年08月04日 14:26
  • 640

C#常用工具类

using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Browser; ...
  • cyj380236628
  • cyj380236628
  • 2015年11月13日 22:54
  • 1608

C#学习笔记2:C#中修饰类相关的关键字

修饰符用于限定类型以及类型成员的申明,C#中的修饰符按功能可分为四部分:属性修饰符,存取修饰符,类修饰符和成员修饰符。 属性修饰符: [Serializable]:按值将对象封送到远程服务器。在...
  • lzg13541043726
  • lzg13541043726
  • 2015年05月08日 09:23
  • 749

C#常用工具类——Excel操作类

// 常用工具类——Excel操作类 ///  ------------------------------------------------ ///  CreateConnecti...
  • wuyuander
  • wuyuander
  • 2017年06月06日 11:09
  • 537

继承与嵌套类(C#)

嵌套类存在的理由: 一个类在它包容类外部没有多大意义的时候,设计成嵌套类更为妥当一些。 嵌套类的特点: 1.由于它只与包容类产生关系,所以应该需要防止从包容类外部访问它。那么当类是嵌套类的时候,要使用...
  • u010792238
  • u010792238
  • 2016年03月09日 16:02
  • 1326

C#常用操作类库——验证类

public class Validator { #region 验证输入字符串为数字 /// /// 验证输入字符串为数字 ...
  • kone0611
  • kone0611
  • 2016年07月02日 17:29
  • 952

C#个人总结2——类和对象

1
  • cxfwolfkings
  • cxfwolfkings
  • 2016年06月29日 04:24
  • 417

C#学习日记13---类(Class)的声明与定义

类作为面向对象的灵魂,在C#中有着相当广泛和深入的应用,对类的深度掌握自然是我们学习C#重要的一个环节.有关类的意义上一篇  C#学习日记12---引用类型 中已经给出了,这里就不再重复了.说到 类...
  • HC666
  • HC666
  • 2015年10月05日 21:14
  • 2581

C#类库开发示例及在项目中该类库的方法

首先在VS中新建类库项目:
  • u010771437
  • u010771437
  • 2014年11月23日 14:35
  • 2591

C# Form类学习

Form.MdiChildActivate 事件  在多文档界面 (MDI) 应用程序内激活或关闭 MDI 子窗体时发生。 可以使用此事件执行一些任务,如根据激活的 MDI 子窗体的状态更新该 ...
  • yueguanyun
  • yueguanyun
  • 2013年03月19日 14:24
  • 1346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#学习笔记类和结构体
举报原因:
原因补充:

(最多只允许输入30个字)