C#

1.深入.NET框架

.NET框架的魅力

提供了一个面向对象的的编程环境,完全支持面向对象编程。.NET框架提高了软件的可复用性、可扩展性、可维护性和灵活性,这些特点需要我们在今后的学习中慢慢体会。

对Web的应用的强大支持。如今是互联网的时代,大量的网络应用程序发挥着重要的作用。例如,世界上较大的个人计算机供应商戴尔公司(DELL),它的销售手段是网络订购方式,它的官方网站就是由.NET开发的。面对如此庞大的用户群体的访问,它仍旧能够保证高效率的工作,这与.NET平台的强大功能与稳定性是分不开的。

.NET框架体系结构

了解了.NET框架的魅力之后,下面来介绍.NET框架的组成及工作原理

.NET框架运行在操作形态之上,是.NET最基础的框架。它提供了创建、部署和运行.NET应用的环境,主要包含公共语言进行时(CLR)和框架类库(.NET Framework类库,FCL),并且支持多种开发语言,也就是我们所说的跨语言开发。

.NET框架具有两个主要组件:CLR和FCL。CLR是.NET框架的基础,FCL是一个综合性的面向对象的可重用类型集合,利用它不仅可以开发传统命令行应用程序,而且可以开发WInForms应用程序及基于ASP.NET的应用程序。

1.WPF

WPF是微软Vista操作系统的核心开发库之一,它不仅是一个图形引擎,而且给Windows应用程序的开发带来了一次革命。对于普通用户而言,最直观的感受是界面越来越漂亮,用户体验更加友好;而对于开发人员而言,界面显示和程序代码将更好的得到分离,这与以前的桌面应用开发有很多不同。一个开发出来的WPF程序不仅可以被发行到桌面,而且可以被发行到Web及智能设备上。Vista操作系统界面及Silverlight都是通过WPF来实现的。

2.CLR

CLR的全称为公共语言运行时。它是所有.NET应用程序运行时环境,是所有.NET应用程序都要使用的编程基础,它如同一个支持.NET应用程序运行和开发的虚拟机。开发和运行一个.NET应用程序必须安装.NET Framework。CLR也可以看成一个在执行时管理代码的代理,管理代码都是CLR的基本功能,能够被其管理的代码称为托管代码,反之称为非托管代码。CLR包含两个组成部分:CLS(公共语言规范)和CTS(通用类型系统)

3.CTS

C#和VB.NET都是CLR的托管代码,它们的语法和数据类型各不相同,CLR时如何对这两种不同的语言进行托管的呢?通用类型系统(Common Type System,CTS)用于解决不同语言数据类型不同的问题。

4.CLS

编程语言的区别不仅在于类型,语法或者说语言规范也都有很大的区别。因此.NET通过定义公共语言规范,限制了由这些不同点引发的互操作性的问题。CLS是一种最低的语言规范,它制定了一个以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。凡是遵守这个标准的语言在.NET框架下都可以实现互相调用。

5.FCL

.NET框架另外一个重要部分是FCL,即框架类库。FCL提供了对系统功能的调用,是建立.NET应用程序、组件和控件的基础。通过灵活运用这些类库。我们的开发工作将会更加便利。

类和对象

由对象归纳为类,是归纳对象共性的过程。

在类的基础上,将状态和行为实体化为对象的过程称为实例化

对于类的属性,我们通过get和set访问器进行访问和设置,用来保障类中数据的安全。属性访问器分为以下三种:

只写属性:只包含set访问器。

只读属性:只包含get访问器。

读写属性:同时包含set访问器和get访问器。

封装

​ 封装又称为信息隐藏,是指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能隐藏北部的细节,只保留一些对外接口,使之与外部发生联系。封装主要给我们带来的好处

保证数据的安全性

提供清晰的对外接口

类内部实现可以任意修改,不影响其他类

2.深入C#数据类型

值类型和引用类型

值类型

每个值类型都有一个独立的内存区域用于保存自己的值,值类型数据所在的内存区域称为栈。只要在代码中修改它,就会在它的内存区域被保存这个值。

引用类型

在C#中引用类型主要包括数组、类和接口等。

结构

结构语法:

访问修饰符 struct 结构名
{
    //结构体
}

结构的定义有以下特点:

结构中可以有字段,也可以有方法。

定义时,结构中的字段不能被赋初值。

结构的使用

结构的构成和类相似。在使用结构时,要注意以下几个方面

可以不用new,直接定义结构的对象即可。

声明结构的对象后,必须给结构的成员赋初值。

3.使用集合组织相关数据

集合概述

ArrayList非常类似数组,也有人称它为数组列表,ArrayList可以动态维护。我们知道,数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充,它的索引会根据程序的扩展而重新进行分配和调整。ArrayList提供了一系列方法对其中的元素进行访问、增加和删除操作。

ArrayList通过Add()方法添加数据

ArrayList通过RemoveAt()方法删除指定下标的值

ArrayList通过Remove()方法删除指定索引的值

Hashtable

C#提供了一个称为Hashtable的数据结构,通常称为哈希表,也有人称它为“字典”。使用字典这个名称,是因为其数据构成非常类似于生活中的字典。在一本字典中,我们常常通过一个单词查找关于这个单词的更多信息。Hashtable的数据是通过键和值来组织的。

泛型

泛型是C#2.0中的一个新特性。泛型引入了一个概念:类型参数。通过使用类型参数(T),减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度地重用代码,保护类型的安全及提高性能,它的最常见应用就是创建集合类,可以约束集合类中的元素类型。

泛型集合List

语法:

List<T> 对象名 = new List<T>();

T可以对集合中的元素类型进行约束,T表明集合中管理的元素类型。

泛型集合Dictionary<K,V>

在C#中还有一种泛型集合Dictionary<K,V>。它具有泛型的全部特性,编译时检查类型约束,获取元素时无须类型转换,并且它存储数据的方式和Hashtable类似,也是通过Key/Value(键/值)对元素保存的

语法如下

Dictionary<K,V> 对象名 = new Dictionary<K,V>();

泛型类

在集合中使用泛型只是泛型多种应用的一种,在类、方法等方面也有着泛型的广泛应用,使用泛型类,可以封装不是特定于具体数据类型的操作。

对于一些常常处理不同类型数据转换的类,可以使用泛型定义。定义泛型类的过程,与定义一个类相似。语法如下:

public class 类名<T>
{
 	   
}

T指类型参数,代表具体的数据类型。可以是类类型,也可以时基本数据类型。

4.深入类的方法

构造函数

类的构造函数时类中的一种特殊方法,它具有以下特点。

方法名与类名相同

没有返回值类型

主要完成对象的初始化工作

无参构造函数

在默认情况下,系统将会给类分配一个无参构造函数,并且没有方法体,我们也可以自定义一个无参构造函数,在无参构造函数的方法体种对类的属性进行赋值。无参构造函数的语法如下:

访问修饰符 类名(){}

带参构造函数

语法如下

访问修饰符 类名(参数列表){}

参数列表一般用来给类的属性赋值

隐式构造函数

当你手动添加了一个无参构造函数时,系统会默认给你添加一个隐式的参数,如果你手动添加了参数,那么不会有隐式的参数。

构造函数的重载

在面向对象的语言中,允许我们在同一个类中定义多个方法名相同,参数列表(参数个数、参数类型)不同的方法,称为方法重载。调用时会根据实际传入参数的形式,选择与其匹配的方法执行。构造函数的重载是方法重载的一种特殊方式。

方法重载的特点:

方法名相同

方法参数类型不同或者参数个数不同

个隐式的参数,如果你手动添加了参数,那么不会有隐式的参数。

构造函数的重载

在面向对象的语言中,允许我们在同一个类中定义多个方法名相同,参数列表(参数个数、参数类型)不同的方法,称为方法重载。调用时会根据实际传入参数的形式,选择与其匹配的方法执行。构造函数的重载是方法重载的一种特殊方式。

方法重载的特点:

方法名相同

方法参数类型不同或者参数个数不同

在同一个类中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值