- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对象和类型课案
对象和类型
类和结构
类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。类定义了每个类对象(实例)可以包含什么数据和功能。例如,一个类表示一个顾客,就可以定义字段CustomerID,Lastname和Address,以包含顾客信息。还可以定义处理存储在这些字段中的数据的功能。接着就能实例化这个类的对象,以表示某个顾客,并为这个实例设置这些字段,使用其功能。
结构和类的区别在它们在内存中的存储方式(类是存储在堆(heap)上)的引用类型,而结构是存储在堆栈(stack)上的值类型。访问方式和一些特征(结构不支持继承)。
对于类和结构,都使用关键字new来声明实例:这个关键字创建对象并对其进行初始化。
类中的数据和函数成为类的成员——数据成员和函数成员,除成员之外类还可以包含嵌套类型(比如其他类)。
数据成员包含了类的数据——字段、常量和事件。数据成员可以是静态数据(与整个类相关)或实例数据(类的每个实例都有他自己的数据副本)。通常类成员总是实例成员,除非用static进行了显示声明。
字段是与类相关的变量。
一旦实例化PhoneCustomer对象,就能使用语法Object.FieldName来访问这些字段:
PhoneCustomer Customer1= new PhoneCustomer();
Customer1.FirstName=”zz”;
常量与类的关联方式同变量与类的关联方式相同。使用Const关键字来声明变量。如果它们声明为public就可以在类的外部访问。
***************************************************************************
C#程序是一组类型声明。
C#程序或DLL源代码是一组一种或多种类型声明。
命名空间是一种把相关的类型声明分组并命名的方法。既然程序是一组相关的类型声明,那么通常会把程序声明在你创建的命名空间内部。
Namespace Program
{
DeclarationOfTypeA
DeclarationOfTypeB
Class C
{
Static void main()
{
….
}
}
}
什么是类型?
用来创建数据结构的模板。模板本身不是数据结构,但它详细说明了由模板构造的对象的特征。类型由下面的元素定义:
名称
用于保存数据成员的数据结构
一些行为及约束条件
实例化类型
从某个类型模板创建实际的对象,称为实例化该类型。
通过实例???类型而创建的对象被称为类型的对象或类型的实例。
在C#程序中,每个数据项都是某种类型的实例。这些类型可以是语言自带的,可以是BCL或其他库提供的,也可以是程序员定义的。
成员的类别
另一些类型可以包含许多不同类型的数据项。这些类型中的数据项个体称为成员,并且与数组中使用数字来引用成员不同,这些成员有独特的名称。
数据成员:保存了与这个类的对象或作为一个整体的类的相关的依据。
函数成员:执行代码,函数成员定义类型的成员。
非简单预定义类型
String unicode字符序列 System.String
Object 所有其他类型的基类 System.Object
Dynamic 在使用动态语言编写的程序集时使用
用户定义类型:
类(class)
结构(Struct)
数组(array)
枚举(enum)
委托(delegate)
接口(interface)
类型通过类型声明创建,类型声明包含:要创建的类型种类、新类型的名称、对类型中每个成员的声明(名称和 规格,array和delegate类型除外)
一旦声明了类型就能像预定义类型一样创建和使用这种类型的对象
使用用户定义类型必须先声明类型,然后实例化该类型的对象。
栈
运行中的程序使用两个内存区域来存储数据:栈和堆,存储在哪里依赖于数据类型。
数据先进后出,后进的数据促使栈顶上移,把数据放入栈顶叫入栈,从栈顶删除叫出栈。
栈存储:某些类型变量的值、程序当前的执行环境、传递给方法的参数
堆
堆可以分配大块的内存用于存储某类型的数据对象。堆里的内存可以以任意顺序存入和移除。虽然程序可以在堆里保存数据,但并不能显式地删除它们。CLR的自动GC(垃圾收集器)在判断出程序的代码将不会再访问某数据项时,自动清除无主的堆对象。
值类型和引用类型
引用类型需要两段内存
1、第一段存储实际的数据
2、第二段是一个引用,指向数据在堆中的存放位置
存储引用类型对象的成员
引用类型的对象的数据部分始终存储在堆里
值类型对象,或引用类型数据的引用部分可以存放在堆里,也能存放在栈里,视实际环境而定。
例如,假设有一个引用类
原创力文档


文档评论(0)