前言:学习C#编程应该有几个月了,作为一个菜鸟,没有资格来评论什么。只有对自己所学进行一个总结,可能有不严谨的地方,万望谅解。
一·深入.NET框架
.NET框架(.NET Framework),他是开发.NET应用程序的核心基础。
.NET框架的体系结构
支持C#、VB、.NET、c++、等语言的开发,也就是我们所说的跨语言开发。
.NET框架具有两个主要组件:CLR和FCL。(CLR是Common Language Runtime即公共语言进行时;FCL是Framework Class Library即框架类库)
.NET框架核心类库及其功能
类和对象
类定义了一组概念模型,而对象是真实的实体。
set访问器只写;get访问器只读。
在vs中自动属性prop+双击Tab键
封装
1.保证数据的安全性。
2.提供清晰的对外接口
3.类内部可以任意修改,不影响其他类。
类图
二.深入C#数据类型
值类型应用类型
值类型包括基本数据类型,和枚举类型,,结构体等。
引用类型包括string 数组,类和接口。
结构体:
可以有字段,可以有方法。
定义时字段不能被赋初值。
不用new。声明结构对象后必须给结构成员赋初值。
拆箱和装箱
示例:
int a=1;
object o=i;//装箱
int j=(int)o;//拆箱
值传递和引用传递
引用类型作为参数时:
1、在修改变量本身时,结果类似于值传递,即不会改变传递前的变量的值
2、在修改变量的属性或字段时,才是引用传递,会影响到传递前的变量的值
3、参数使用了ref后,才是真正的引用传递,不管修改变量本身还是修改变量的属性或字段,都会影响到传递前的变量的值
值传递:传的是对象的值拷贝。(即函数内参数对象是调用时传递的对象的栈中对象的拷贝。)
引用传递:传的是栈中对象的地址。(即函数内参数对象与调用时传递的对象完全是同一栈中对象。)
三.使用集合组织相关数据
System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。
using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ArrayList list = new ArrayList(); Console.WriteLine("遍历方法一:"); foreach (int item in list)//不要强制转换 { Console.WriteLine(item);//遍历方法一 } Console.WriteLine("遍历方法二:"); for (int i = 0; i < list.Count; i++)//数组是length { int number = (int)list[i];//一定要强制转换 Console.WriteLine(number);//遍历方法二 } } } }
1、哈希表(Hashtable)简述
在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对.
2、哈希表的简单操作
在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);
遍历
foreach(DictionaryEntry item in Hashtable)
{
item.Key;
item.Values;
}
泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。
很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类: