深入了解C#

深入了解C#

.NET框架

什么是.NET框架

  1. 它是开发.NET应用程序的核心基础
  2. 它提供了一个面向对象的编程环境,完全支持面向对象编程
  3. 对Web应用的强大支持
  4. 对Web Service(Web服务)的支持
  5. 实现SOA,支持云计算
  6. 支持构建.NET程序的炫彩外衣

.NET框架体系结构

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

CLR

CLR的全称是公共语言运行时(Common Language Runtime),它是所有.NET应用程序运行时环境,是所有.NET应用程序都要使用的编程基础。CLR包含两个组成部分:CLS(公共语言规范)和CTS(通用类型系统)。

CTS

CTS通用类型系统(Common Type System)用于解决不同语言数据类型不同的问题。

CLS

CLS公共语言规范(Common Language Specification)限制了由这些不同点引发的互操作性问题,是一种最低的语言标准。

FCL

FCL是.NET框架的一个重要部分,即框架类库。在.NET框架中提供了非常丰富实用的类库,这些类库都是我们进行软件开发的利器例如

System; //此命名空间包含所有其他的命名空间
System.Collections.Generic;//支持泛型操作
System.IO;//支持对文件的操作
System.Net;//支持对网络协议的编程
System.Data;//提供对表示ADO.NET结构的类的访问
System.Windows.Forms;//用于开发Windows应用程序
System.Drawing;//支持GDI+基本图形操作

以上都是一些.NET框架的核心类库及其2功能。

面向对象回顾

类和对象

我们都知道关于类和对象之间的关系:

  1. 对象是类的具体化;
  2. 类是对象的抽象化

对于类的属性,我们通过get和set访问器进行访问和设置,用来保障类中数据的安全,如:

  1. 只写属性:只包含set访问器;
  2. 只读属性:只包含get访问器;
  3. 读写属性:同时包含set访问器和get访问器
封装

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

封装主要给我们带来了如下好处:

  1. 保证数据的安全性
  2. 提供清晰的对外接口
  3. 类内部实现可以任意修改,不影响其他类

将字段封装为属性是封装的一种方式,类的私有方法也是一种封装。

C#数据类型

常用的数据类型:

常用数据类型 Java C#
整型 int int
浮点型 float float
双精度型 double double
字符串 String string
布尔型 boolean bool
枚举型 menu menu

值类型

值类型源于System.ValueType家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型数据所在的内存区域称为栈(Stack)。

引用类型

引用类型源于System.Object家族,在C#中引用类型主要包括数组、类和接口等。

注意:值类型的值保存在栈中,一旦在代码中修改它的值,它保存在栈中的值都会发生改变。引用类型的值保存在堆中,同时会在栈中保存堆的地址,是指向性的,在修改同一个堆中的值时,才会改变。

结构

当发现一个类中具有的字段都是值类型的,而且个数比较少,此时我们可以用C#为我们提供的结构(Structure)这个数据类型。

结构的定义:

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

注意:结构中可以有字段,也可以有方法。定义时,结构中的字段不能被赋初值。不能手写构造函数,定义构造函数时有多少字段就要有多少个参数,为字段赋值。

关于结构的使用:

注意

  1. 可以不用new,直接定义结构的对象即可
  2. 声明结构的对象后,必须给结构的成员赋初值
  3. 不new的时候不可以直接调用属性赋值,会报错

装箱和拆箱

装箱:将值类型转换为引用类型的过程

拆箱:将引用类型转换为值类型的过程

注意:在拆箱时,被转换引用类型的数值必须能够转换为目标值类型。其次在实际的开发中,应该尽量减少不必要的装箱和拆箱,因为二者的存储方式不同,转换时性能损失较大。

参数传递

在C#中传递分为:1.值传递 2.引用传递

值传递
  1. 当使用引用类型作为参数时,当参数被修改时,值也会被修改(String除外)。
  2. 当使用值类型作为参数时,当参数被修改时,值不会被修改。
引用传递
  1. 在使用引用传递时,需用ref修饰。
  2. 当使用引用传递时,不管是值类型或引用类型时,参数所作修改,值都会被修改。

使用集合

数组是一组具有相同类型的数据的集合,但是数组的大小是固定的。从此我们可以想到是否能建立一个动态的“数组”,有了集合。

关于集合

ArrayList

ArrayList非常类似于数组,也有人称它为数组列表,ArrayList可以动态维护。

ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象的集合。

注意:ArrayList是动态可维护的,因此定义时即可以指定容量,也可以不指定容量。

定义:

using System.Collections;//使用前必须导入System.Collections命名空间
//创建容量为0的ArrayList对象
ArrayList students = new ArrayList();
//创建容量为5的ArrayList对象
ArryaList students = new ArrayList(5);

ArrayList的常用方法及属性

属性名称 说明
Count 获取ArrayList中实际包含的元素数
方法名称 说明
int Add(Object value) 将对象添加到ArrayList的结尾处
void RemoveAt(int index) 移除ArrayList指定索引处的元素
void Remove(Object value) 从ArrayList中移除特定对象
void Clear() 从ArrayList中移除所有元素

ArrayList获取一个元素的方法和数组是一样的,也是通过索引(index)来访问,ArrayList中的第一个元素索引是0。

注意:由于给ArrayList添加的元素都会被转换为Object型,所以在访问这些元素时必须把它们转化回原来的数据类型。

在遍历ArrayList中的元素,我们可以通过for循环和foreach循环,因为它是通过索引访问的。

//SE为自定义类
//for循环遍历
for(int i = 0; i < engineers.Count; i++)
{
  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值