.NET平台和C#编程基础知识复习
来源:互联网 发布:淘宝上好吃的零食推荐 编辑:程序博客网 时间:2024/05/01 23:50
深入.NET平台和C#编程复习
1. 深入.NET框架
1.
.NET框架的核心结构:
*CLR是.NET框架的基础;
*FCL用于支持开发各种各样的.NET程序;
*CLS是为了规范各个语言间的最低语言标准;
*CTS是用于解决不同语言数据类型的不同的问题。
2. 面试:.NET应用可以跨平台吗?
可以。通过开源项目Mono,可实现在Unix和Linux下运行.NET应用程序。
3. 封装的好处:
● 保证数据安全
● 提供对外接口
● 类内部修改后不影响其他类
*类的私有方法也是一种封装。
2. 深入C#数据类型
1. 数据类型:
分为:值类型 和 引用类型。
值类型:
值类型都存放于单独的内存区域中。存放值类型的内存区域称为“栈”(Stack)。诸如:入栈、出栈、堆栈等。
主要包括基本数据类型和枚举类型。
引用类型:
针对于赋值操作来说,就是将原对象的引用传递到另一个引用。操作的时同一块内存区域。则当此块内存区域的值改变后,相引用关联的对象的值也会一起改变。
引用类型包括数组、类和接口等。
值类型和引用类型对照表
类别
描述
值类型
基本数据类型
int 整型
long 长整型
float 浮点型
double 双精度型
char 字符型
bool 布尔型
枚举类型
enum 枚举
结构类型
struct 结构
引用类型
类
System.Object 基类
string 字符串
class 自定义类
接口
interface 接口
数组
int[],string[]…… 数组
*string虽然属于引用类型,但在使用中表现出值类型的特征,即string的值可以被更改。
例如:
int[] infoZhang = new int[]{170,60};
int[] infoLi = infoZhang;
则只要infoZhang或infoLi的任意一个数组改变,则两者都会发生改变,因为他们两个变量都操作同一块内存区域。若两者不互相影响,则new新对象即可。
2. 结构:
为何要使用?
● struct继承于System.ValueType命名空间,属于值类型,值类型存储于内存的堆栈(Heap-Stack)中,速度快;
● class继承于System.Object命名空间,属于引用类型,存储于堆(heap)中,速度没有在栈(Stack)中快。
特点:
● 可具有字段和方法
● 字段不能赋初值
● 可以不用new关键字直接定义结构的对象
● 声明了结构的对象后必须赋初值
使用场合:
struct适合处理较少的字段,因为Heap-Stack资源很有限,不像Heap那样具有较大的空间;否则大量数据应继续采用class来完成,而不是struct。
3. 装拆箱
关系:
*拆箱时,原来装箱的值是何种类型则拆箱时也必须是这种数据类型,否则在强转时会抛出异常。
例如:
int i = 123;
object o = i; //装箱
int j = (int)o; //拆箱
4. 值传递和引用传递
规律:
● 使用值方式传递值类型参数时,修改不保留;
● 使用值方式传递引用类型参数时,保留修改;
● 使用引用方式传递值类型参数或引用类型参数时,保留修改。
只要是对参数进行引用类型的传递或者用ref关键字修饰参数进行传递的,都会保留更改。
注意
看如下例子:
针对String类型的改变值的例子。
未使用ref:
使用了ref:
可以看得出,虽然String类型属于引用类型,原本应该修改掉String变量本身的值,可结果却没有修改掉。
推出结论:虽然String为引用类型,但实际使用中却表现出值类型的特点。(其实,从更本质的方面来说,String根本就不算一种数据类型。)
若想改变字符串的值,则变量前使用ref关键字修饰即可。
3. 使用集合组织相关数据
1. ArrayList
ArrayList相当于动态数组,称为“数组列表”。既然属于数组,则必定可通过索引访问。且可动态扩充容量,且会将放入的数据装箱。
若要指定大小则在实例化后的括号内填写指定的容量大小即可。
数据的添加
[ArrayList对象] . Add( [数据] );
获取实际元素数
[ArrayList对象] . Count .ToString();
删除元素
● 按照索引删除:
[ArrayList对象] . RemoveAt( [索引位置]);
● 按照对象名称删除:
[ArrayList对象] . Remove( [对象名称]);
2. 集合初始化器
…… = newArrayList()
{
new SE(){Name = “张三”,Gender=26,Height=183} ,
new SE(){Name = “李四”,Gender=17,Height=175},
…………
}
3. HashTable
一种名为“哈希表”的数据结构。其通过键(Key)-值(Value)对来组织数据的,且会将放入的数据装箱。
添加元素
[HashTable对象] . Add( [键] , [值/实际对象/实际值] );
获取元素
String names = (String)[HashTable对象] [ “[键名称]” ];
删除元素
[HashTable对象] . Remove [ “[键名称]” ];
4. ArrayList和HashTable的异同点
描述
ArrayList
HashTable
异
访问元素的方式
索引、对象名
键名称
容量自动扩充
支持
不支持
遍历方式
for、foreach
foreach
同
装箱
是
是
部分属性和方法
Count、Clear()、Remove()
Count、Clear()、Remove()
5. 泛型和泛型集合
泛型集合可对集合中的元素类型进行约束,提高数据安全性和性能。
泛型集合List<T>
List<T>与ArrayList相似,只不过List<T>是ArrayList的加强,它对放入集合中的数据类型进行了约束。
既然进行了约束,就不会出现各种各样的数据类型,所以List<T>在取值时无须强转,提高了性能。
泛型集合Dictionary<K,V>
Dictionary<K,V>是HashTable的加强,具有泛型集合的全部特性,取值时仍不需要强转。
泛型类
泛型类中可以容纳任意数据类型。此数据类型由程序运行时决定。
public classClassName<T>
{
private T_VALUES; //值类型不定
public TvALUES //运行时由程序决定数据类型
{
get { return _VALUES; }
set { _VALUES = value; }
}
}
4. 深入类的方法
1. 构造函数
特点:
● 方法名与类名相同
● 无返回值类型
● 作用是初始化对象
种类:无参构造函数和 带参构造函数 。
执行过程:构造函数当在new时(调用时)就已经执行过了。构造函数先于类的其他方法执行。
系统默认情况下会为类分配一个无参构造函数(隐式构造函数,无方法体);
当手动编写了任意一个类的构造函数后,C#为类默认分配的无参构造函数就失效了,若仍想启用,则只能手动编写无参构造函数。
MSDN官方文档:在C#中,一旦类有了构造函数,就不再自动分配构造函数。
带参构造函数以传参的方式完成对象的初始化工作。
2. 方法重载
方法名相同、参数列表不同的方法称为“重载”。
*重载的方法与方法的返回值毫无关系。
构造函数的重载
构造函数可带有各种各样的参数,所以可以在同一个类中构成重载。
3. 对象的交互
对象间通过 属性和 方法 进行交互。
【第6章】
- .NET平台和C#编程基础知识复习
- (1-2)章深入.NET平台和C#编程 复习的时候 整理的笔记
- 深入.NET平台和C#编程---总结
- 深入.NET平台和C#编程 第一章 学习笔记
- 深入.NET平台和C#编程 第二章 学习笔记
- 深入.NET平台和C#编程 第三章 学习笔记
- 深入.NET平台和C#编程 第四章 学习笔记
- 深入.NET平台和C#编程 第五章 学习笔记
- ACCP5.0 深入.NET平台和C#编程 小总结
- 深入.NET平台和C#编程基础小结
- 深入.NET平台和C#编程 第一章 概念+上机
- 深入.NET平台和C#编程--第二章经理评分
- 深入.NET平台和C#编程第一章回顾
- 【记录】c# 基础知识复习
- c#基础知识复习
- C#基础知识复习
- Microsoft C#基础知识复习
- C#基础知识复习
- 初识分布式服务管理框架-Dubbo
- 使用Apache Solr对数据库建立索引(包括处理CLOB、CLOB)
- 侧滑删除进阶(二)
- 彩色TabBar切换动画实现
- Android Service绑定与跨进程通信
- .NET平台和C#编程基础知识复习
- HDU1162
- 大家对华为的评价
- MQ JMS发送消息并接收客户端回复
- PAT 1025. PAT Ranking (25)
- VB.NET线程池应用实例
- 第一课python
- mybatis实现数据的批量删除
- POJ 3169 Layout(差分约束)