栈
也是System.Collections下的数据结构类,存储的也是Object类型的对象。
Stack 名字=new Stack();
Count:实际拥有的元素个数;
栈的释放顺序是先进后出(先进后出)
压栈——Push(object 对象)把这个对象添加到栈。
弹栈——Pop() 把栈顶的元素弹出来。
Peek() 返回栈顶的元素,不删除。
在遍历弹栈的时候要注意,Pop方法会删除你的对象,导致Count属性发生改变,所以,应该用一个变量存储一下一开始的Count值根据这个变量,来弹栈,就可以把栈中所有的数据弹出去。
队列
是System.Collections下的数据结构类,存储Object类型对象。
Queue que=new Queue();
队列的释放顺序是先进先出。
属性 Count:该结构包含的元素个数。
方法:EnQueue(object value) 进入队列的末尾处。
DeQueue() 返回并移除队列最前面的那个元素。
Peek() 把队列中队首的元素返回,但不删除。
泛型
因为我们在编程中想先不定义数据类型,只想先写逻辑,就可以使用Object类型,这样我的逻辑就适用于所有类型,但是在运行中,Object类型的变量会需要转换到对应类型,浪费资源,所以出现泛型,来替代Object类型的方案。
使用泛型,可以让我们延迟定义数据类型,来编写程序。
泛型是一种将逻辑应用到不同数据类型上的机制,可以通过类型替代符暂时替代参数的数据类型,这样只需要在编译的时候,编译器会自动将该替代符编译成对应数据类型来处理。
泛型方法
定义泛型方法
访问修饰 返回类型 方法名<T,U>(T参数 U参数){}
我们可以在方法名后使用<类型替代符>来定义一个泛型方法。
在使用的时候 方法名<数据类型>(参数)。
泛型示例
class Program{static void Main(string[] args){Console.WriteLine(Add<int>(10,20));}public static string Add<T>(T a, T b){return a.ToString() + b.ToString();}}
我们可以在方法名后使用<类型替代符>来定义一个泛型方法
方法定义好后,在调用泛型方法时,应该在<>括号内填上对应的类型 。
使用范围
当你的方法适用于所有数据类型的时候,可以使用泛型来代替Object类型,以节省资源。
泛型类
访问修饰符 class 类名<T>{T 成员;
}
类型替代符的作用:可以让我们先不定义数据类型,只管逻辑,在调用此方法或者此类对象时,才在<>里填上对应类型,这样我这段逻辑或者说这个类结构就可以适用于所有数据类型,而且要比Object类型节省资源。
该系列专栏为网课课程笔记,仅用于学习参考。