主要内容:C# 中的集合类型C# 中的集合类(Collection)是专门用于数据存储和检索的类,类中提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类都实现了相同的接口。 集合类的用途多种多样,例如可以动态的为元素分配内存、根据索引访问列表项等等,这些类创建 Object 类的对象集合,Object 类是 C# 中所有数据类型的基类。 C# 中的集合类型 在
在 C# 中,事件(Event)可以看作是用户的一系列操作,例如点击键盘的某个按键、单击/移动鼠标等,当事件发生时我们可以针对事件做出一系列的响应,例如退出程序、记录日志等等。C# 中线程之间的通信就是使用事件机制实现的。 事件需要在类中声明和触发,并通过委托与事件处理程序关联。事件可以分为发布器和订阅器两个部分,其中发布器是一个包含事件和委托的对象,事件和委托之间的联系也定义在这个类中,发布器类
主要内容:声明委托,实例化委托,多播委托(合并委托)C# 中的委托(Delegate)类似于 C 或 C++ 中的函数指针,是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。委托特别适用于实现事件和回调方法,所有的委托都派生自 System.Delegate 类。在实例化委托时,可以将委托的实例与具有相同返回值类型的方法相关联,这样就可以通过委托来调用方法。另外,使用委托还可以将方法作为参数传递给其他方法, 委托具有以下特点: 委托类似
主要内容:访问器,抽象属性属性(Property)是 类(class)、 结构体(structure)和 接口(interface)的成员,类或结构体中的成员变量称为字段,属性是字段的扩展,使用访问器(accessors)可以读写私有字段的值。 属性没有确切的内存位置,但具有可读写或计算的访问器。例如有一个名为 Student 的类,其中包含 age、name 和 code 三个私有字段,我们不能在类的范围以外直接访问这些
主要内容:反射的用途,查看元数据反射(Reflection)是指程序可以访问、检测和修改它本身状态或行为的一种能力,反射中提供了用来描述程序集、模块和类型的对象,可以使用反射动态地创建类型的实例,并将类型绑定到现有对象,或者从现有对象中获取类型,然后调用其方法或访问其字段和属性。 如果代码中使用了特性,也可以利用反射来访问它们。 反射的用途 C# 中反射具有以下用途: 在运行时查看视图属性信息; 检查装配中的各种类型并实例化这些
主要内容:1、定义特性,2、预定义特性,3、自定义特性特性(Attribute)是一种用于在程序运行时传递各种元素(例如类、方法、结构、枚举等)行为信息的声明性代码。使用特性可以将元数据(例如编译器指令、注释、描述、方法和类等信息)添加到程序中。.Net Framework 提供了两种类型的特性,分别是预定义特性和自定义特性。 在 C# 中,特性具有以下属性: 使用特性可以向程序中添加元数据,元数据是指程序中各种元素的相关信息,所有 .NET 程序中
主要内容:声明接口,接口继承接口可以看作是一个约定,其中定义了类或结构体继承接口后需要实现功能,接口的特点如下所示: 接口是一个引用类型,通过接口可以实现多重继承; 接口中只能声明"抽象"成员,所以不能直接对接口进行实例化; 接口中可以包含方法、属性、事件、索引器等成员; 接口名称一般习惯使用字母“I”作为开头(不是必须的,不这样声明也可以); 接口中成员的访问权限默认为 public,所以我们在定义接口时不用再为接口成员指
主要内容:1、编译时多态,2、运行时多态多态与 封装和 继承被视为面向对象编程的三大特性。 多态(Polymorphism)是一个希腊词,指“多种形态”,在 C# 中具有两种类型的多态: 编译时多态:通过 C# 中的方法重载和运算符重载来实现编译时多态,也称为静态绑定或早期绑定; 运行时多态:通过方法重载实现的运行时多态,也称为动态绑定或后期绑定。 1、编译时多态 在编译期间将函数与对象链接的机制称为早期绑定,也称为静态绑定。C# 提供
主要内容:1、基类和派生类,2、多重继承继承与 封装和 多态被统称为面向对象编程的三大特性,本节我们主要来介绍一下继承这一特性。 在创建一个新类时,我们可以使用这个新定义的类继承一个已有的类,通过继承可以在创建新类时重用、扩展和修改被继承类中定义的成员。被继承的类称为“基类(父类)”,继承基类的类称为“派生类(子类)”。 需要注意的是,C# 中只支持单继承,也就是说一个派生类只能继承一个基类,但是继承是可以传递的,例如 ClassC 继
主要内容:Array 类中的属性,Array 类中的方法Array 类是 C# 中所有数组的基类,其中提供了一系列用来处理数组的操作,例如对数组元素进行排序、搜索数组中指定的元素等。 Array 类的签名如下所示: [SerializableAttribute] [ComVisibleAttribute(true)] public abstract class Array : ICloneable, IList, ICollection, IE
主要内容:1、声明数组,2、初始化数组,4、访问数组中的元素,5、使用 foreach 遍历数组和其他编程语言一样 C# 中也支持数组,数组是一个用来存储相同类型数据的、固定大小的、具有连续内存位置的顺序集合。数组中的每个元素都对应一个索引值,索引从 0 开始依次递增,我们可以通过索引来访问数组中的指定元素。 假如我们要存储 100 名学生的分数,若使用普通变量的话可能需要定义 100 整型变量,例如 number0、number1、...、number99。而如果使用数组就简单的多了,只需
主要内容:1、public,2、private,3、protected,4、internal,5、protected internalC# 是一门面向对象编程语言,面向对象编程语言有三大特性,分别是封装、 继承和 多态。所谓封装就是将一个或多个项目(函数)集合在一个单元中,这个单元称之为类,我们可以根据需要通过访问权限修饰符来设定类中成员的范围和可见性。C# 中的访问权限修饰符有以下几种: public:公共的,所有对象都可以访问,但是需要引用命名空间; private:私有的,类的内部才可以访
主要内容:1、单行注释,2、多行注释在 C# 中,注释通常用来对代码、变量、方法或类进行解释说明,注释中的内容不会被编译器编译,所以我们还可以借助注释来隐藏程序中不必要的代码。 C# 中的注释有两种类型: 单行注释; 多行注释。 1、单行注释 单行注释以 (双斜杠)开头,并且不需要任何结束符。需要注意的是,单行注释只对所在的行有效, 之后的内容才会被当作注释的内容, 之前的内容编译器会正常编译。 让我们看一下 C# 中单行注释的示例
主要内容:定义常量,整数常量,浮点常量,字符常量,字符串常量常量和我们前面介绍的《 变量》类似,唯一不同的是常量的值在程序的编译阶段就已经确定了,而且在程序的运行期间不允许修改。常量可以是任何基本数据类型,例如整数常量、浮点常量、字符串常量等等。 定义常量 常量需要使用 const 关键字定义,语法格式如下所示: const data_type constant_name = value; 其中,data_type 为常量的数据类型;constant_na
主要内容:声明变量,初始化变量,接受用户输入的值,C# 中的 Lvalues 和 Rvalues 表达式变量可以理解为是我们程序可以操作的内存区域的名称,在 C# 中每个变量都有自己特定的类型,这个类型确定了变量所占内存的大小、布局、取值范围以及可以对该变量执行的操作。 可以将变量当作一种通过符号(变量名)表示某个内存区域的方法,变量的值可以更改,并且可以多次重复使用。C# 中的基本变量类型可以归纳为以下几种: 类型 示例 整型(整数类型) sbyte、byte、short、ushort、int