C#实训Day008:C#中的成员关系体系

2025-10-05 23:46:01

这几天的课感觉上的进度太快了,很多东西都直接忽略了,两三天的时间就直接刚C#的基础知识大概了讲了下,但是效果并不怎么好,感觉头蒙蒙的,概念都变得有点混淆了,所以今天要花点时间来重新整理下C#中的成员关系体系

C#实训Day008:C#中的成员关系体系

工具/原料

C#

方法/步骤

什么是类:

类是C#类型中最基础的类型,是一个数据结构,也是对象的集合,类主要有属性、字段、方法和函数组合在一个单元中,类可以继承于父类,也可以与其他的Class进行交互。

类是对对象的定义,它包含对象的名称、方法、属性和事件等相关信息。

C#实训Day008:C#中的成员关系体系

类的构成:

类中可以包含以下成员:

1.常量: 数据值恒定不变的一个符号

2.字段: 字段表示一个只读或者可读写的数据值

3.构造器:是用来创建对象实例的方法,该方法没有返回类型。

4.方法:一个特殊的函数,用来更改或者查询一个类型或者对象的状态。

5.属性:用来封装字段在外部的访问,避免直接访问字段。 

6.事件:封装一个委托链,通过某种触发机制,通知委托链中的方法执行。 

7子类型:嵌套在类型中的类型,作用是分离复杂性。 

8.操作符重载:重新定义在类所产生对象之间的特定操作

9.转换操作符:定义如何显示或者隐式的将类转换为另外一种类型。

10.索引器:使用索引器可以用类似于数组的方式为对象建立索引

那么在一个类中,怎么去分辨以下内容呢,小编已经开始萌圈了?

C#实训Day008:C#中的成员关系体系

方法:

是包含一系列语句的代码块,程序通过调用该方法并指定方法参数使语句得以执行,用于实现由对象或类执行的计算(在 C# 中,每个执行的指令均在方法的上下文中执行)。

Main 方法是每个 C# 应用程序的入口点,并在启动程序时由公共语言运行时 (CLR) 调用。

C#实训Day008:C#中的成员关系体系

通过指定访问级别(如 public 或 private)、可选修饰符(如 abstract 或 sealed)、返回值、方法的名称以及任何方法参数,在 类或 结构中声明方法,这些部件一起构成方法。

调用对象上的方法只要在对象名之后添加一个句点、方法名和括号。

类提供了用于动态创建类实例的定义,也就是对象(object)。类支持继承(inheritance)和多态(polymorphism),即派生类能够扩展和特殊化基类的机制。

C#实训Day008:C#中的成员关系体系

类之间的关系:

两个相对独立的对象,当一个对象的实例与另外一个对象的特定实例存在固定关系时,这两个对象之间就存在关联关系。

1、单向关联:对象A可以访问对象B的方法和属性,而对象B不能访问对象A

2、双向关联:对象A可以访问对象B的方法和属性,对象B也可以访问对象A

3、自身关联:同一个类对象之间的关联

4、多维关联:多个对象之间存在关联

5、泛化:类与类的继承关系,类与接口的实现关系

6、依赖:类A要完成某个功能必须引用类B,则A与B存在依赖关系。

7、聚合:当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。

8、组合:   对象A包含对象B,对象B离开对象A没有实际意义。

结构类型:

结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。但是,与类不同,结构是一种值类型,并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用。

C#实训Day008:C#中的成员关系体系

结构声明

结构声明是一种用于声明新结构的类型声明:使用struct关键字

<访问修辞符>  struct  <结构名>

{

数据成员

成员函数

}

结构对于具有值语义的小的数据结构特别有用,这些数据结构的关键之处在于:它们只有少量数据成员,它们不要求使用继承或引用标识,而且它们适合使用值语义方便地实现。

结构体和类的区别:

1.值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型.

类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑 因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用

注:   a.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object   b.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用 

C#实训Day008:C#中的成员关系体系

2.继承性 结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed . 类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承 

注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样 

C#实训Day008:C#中的成员关系体系

 3.内部结构: 

结构: 没有默认的构造函数,但是可以添加构造函数 (结构体中不能定义默认的、不带参数的构造函数,只能定义带参的构造函数)没有析构函数 没有 abstract 和 sealed(因为不能继承) 不能有protected 修饰符 可以不使用new 初始化 在结构中初始化实例字段是错误的 类: 有默认的构造函数 (可以定义默认的、不带参数的构造函数,或者带参的构造函数)有析构函数 

可以使用 abstract 和 sealed 

有protected 修饰符 

必须使用new 初始化

C#实训Day008:C#中的成员关系体系

如何选择结构还是类 :

讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类: 1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些 2. 结构表示如点、矩形和颜色这样的轻量对象,例如,如果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。 3. 在表现抽象和多级别的对象层次时,类是最好的选择4. 大多数情况下该类型只是一些数据时,结构时最佳的选择

花了点时间整理了下C#中的一些定义,小编主要在以上几方面出现了混淆,本来以为整理下思维可以帮助小编更好的理解C#,可是整理完之后小编发现,思路更混了。东西太多了,有种恐惧感了,看来着思路是错误的,得换个思路学习了。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢