随笔分类 - Csharp
摘要:List自带排序方法 List<int> list = new List<int>(); list.Add(3); list.Add(2); list.Add(6); list.Add(1); //list提供的排序方法,默认升序排列 //ArrayList中也有sort排序方法 list.Sort
阅读全文
摘要:lambda表达式 可以将lambda表达式理解为匿名函数的简写 //基本语法: //(参数列表) => //{ // 函数体 //}; //无参无返回值 Action a = () => { Console.WriteLine("无参无返回值的lambda表达式"); }; a(); //有参数的
阅读全文
摘要:匿名函数的意义 匿名函数就是没有名字的函数 匿名函数主要是配合委托和事件使用 //delegate (参数列表) //{ // 函数逻辑 //}; //当函数中传递委托参数或者委托和事件赋值时使用匿名函数 //无参无返回值 //申明 Action a = delegate () { Console.
阅读全文
摘要:事件的本质 事件让委托的使用更具有安全性 事件是一种特殊的变量类型 //申明语法: //访问修饰符 event 委托类型 事件名; //事件的使用: //事件是作为成员变量存在于类中 //委托怎么使用,事件就怎么使用 //事件相对于委托的区别: //事件不能再类外部赋值 //事件不能在类外部调用 /
阅读全文
摘要:委托 委托是函数的容器,可以理解为表示函数的变量类型 用来存储和传递函数 委托的本质是一个类,用来定义函数的类型(返回值和参数的类型) 函数必须对应和各自“格式”一致的委托 //关键字:delegate //语法:访问修饰符 delegate 返回值 委托名(参数列表); //可以申明在namesp
阅读全文
摘要:LinkedList LinkedList 是一个可变类型的泛型双向链表 LinkedList<int> linkedList = new LinkedList<int>(); //往链表尾部加 linkedList.Addlast(1); //往链表头部加 linkedList.AddFirst(
阅读全文
摘要:数据结构 数据结构是计算机存储、组织数据的方式 数据结构是指互相之间存在一种或多种特定关系的数据元素的集合 比如自定义的一个类也可以称为一种数据结构,类是一个自己定义的数据组合规则 数据结构简单来说就是人定义的存储数据和表示数据之间关系的规则 常用的数据结构 数组、栈、队列、链表、树、图、堆、散列表
阅读全文
摘要:Dictionary的本质 基于键的哈希代码组织起来的键值对 键值对类型从hashtable的object变成了可以自己指定的泛型 Dictionary<int,string> dictionary = new Dictionary<int,string>(); //增加 //不能出现相同键 dic
阅读全文
摘要:List的本质 是一个可变类型的泛型数组 List<int> list = new List<int>(); List<string> list2 = new List<string>(); //增加 list.Add(1); list2.Add("string"); List<string> li
阅读全文
摘要:泛型约束的概念 让泛型的类型有一定限制 值类型: where 泛型字母 : struct 引用类型: where 泛型字母 : class 存在无参公共构造函数: where 泛型字母 : new() 某个类本身或者其派生类: where 泛型字母 : 类名 某个接口的派生类型: where 泛型字
阅读全文
摘要:泛型的概念 泛型实现了类型参数化,达到代码复用目的 通过类型参数化来实现同一份代码上操作多种类型 泛型相当于类型占位符 定义类或方法时使用替代符代表变量类型 当真正使用类或方法时再具体指定类型 //泛型类和泛型接口 //基本语法: //class 类名<泛型占位字母> //interface 接口名
阅读全文
摘要:Hashtable的本质 Hashtable 又称散列表,是基于键的哈希代码组织起来的键值对 主要作用是提高数据查询效率,使用键来访问集合中的元素 //申明 Hashtable hashtable = new Hashtable(); //增加 //不管是键还是值都是object类型,所以键和值都可
阅读全文
摘要:队列的本质 Queue 的本质也是封装了特殊存储规则的 object[] 数组 Queue 是队列存储容易,是一种先进先出的数据结构 //申明 Queue queue = new Queue(); //增加 //因为是object数组,所以可以存储各种内容 queue.Enqueue(1); que
阅读全文
摘要:Stack的本质 本质是封装了特殊存储规则的 object[] 数组 Stack 是栈存储容器,栈是一种先进后出的数据结构 先存入的数据后获取,后存入的数据先获取 //申明 Stack stack = new Stack (); //增 //压栈 //因为是object类,所以能装任何内容 stac
阅读全文
摘要:ArrayList的本质 ArrayList的本质是一个object类型的数组 申明 ArrayList array = new ArrayList(); 增删查改 //增 //因为是object类型的数组,所以可以存任何类型的内容 array.Add("123"); array.Add(1); A
阅读全文
摘要:七大原则要实现的目标是:高内聚、低耦合 减少类内部对其他类的调用 减少模块之间的交互复杂度 单一职责原则 类被修改的几率很大,因此应该专注于单一的功能 开闭原则 对拓展开放,对修改关闭 继承就是最典型的开闭原则的体现 里氏替换原则 任何父类出现的地方,子类都可以替代 依赖倒转原则 要依赖于抽象,不要
阅读全文
摘要:关联:类A中会有一个类B成员作为它的成员变量 直接关联: 母鸡类中有一个行为是下蛋,它和温度直接关联 聚合:地图类聚合围墙类,鸟类聚合大雁类(类似包含) 依赖:动物类依赖于空气类和水类 复合:公司类包含各种部门类,部门类和公司类就是复合关系 类A继承类B(箭头指向谁就继承谁)
阅读全文
摘要:结构体和类最大的区别是在储存空间上 结构体是值类型,存在栈上 而类是引用类型,存在堆上 结构体中有面向对象思想中封装的特性,但是不具备继承和多态的特性 结构体不具备继承特性,所以不能用 protected 访问修饰符 结构体成员变量申明不能指定初始值,而类可以 结构体中不能申明无参构造函数,但是类可
阅读全文
摘要:基本概念 字符串每次重新赋值或者拼接时都会分配新的内存空间 StringBuilder 是C#提供的一个用于处理字符串的公共类 修改字符串而不创建新的对象,需要频繁修改和拼接的字符串可以使用,可以提升性能,使用前需要引用命名空间 //使用前需要引用命名空间 using System.Text; St
阅读全文
摘要:字符串指定位置获取 字符串本质时char数组 字符串转char数组 char[] chars = str.ToCharArray(); 字符串拼接 str = string.Format("{0}{1}",robot,1); 正向查找字符的位置 str = "robot"; //会返回2 int i
阅读全文