C#高级语法_泛型
泛型的定义
泛型是一种程序特性,当我们使用泛型的时候,确切说定义的时候,是对这个类型不作出明确的规定。但是当我们使用的时候,必须明确规定,并且不能改变。
自定义泛型类测试
//自定义泛型类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{internal class MyStack<T>{private T[] stack;private int size;private int stackPoint;public MyStack(int size){this.size = size;stack = new T[size];this.stackPoint = -1;}/// <summary>/// 入栈/// </summary>/// <param name="item"></param>/// public void Push(T item){if (stackPoint >= size - 1){Console.WriteLine("栈空间已满");}else{stackPoint++;stack[stackPoint] = item;}}public T Pop(){T temp = stack[stackPoint];stackPoint--;return temp;}}
}//测试类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){TestMyStack();Console.ReadLine();}/// <summary>/// 测试出栈和入栈/// </summary>static void TestMyStack(){//创建泛型类的对象MyStack<int> stack1 = new MyStack<int>(5);//元素入栈stack1.Push(1);stack1.Push(2);stack1.Push(3);stack1.Push(4);stack1.Push(5);//元素出栈Console.WriteLine(stack1.Pop());Console.WriteLine(stack1.Pop());Console.WriteLine(stack1.Pop());Console.WriteLine(stack1.Pop());Console.WriteLine(stack1.Pop());MyStack<string> stack2 = new MyStack<string>(5);//元素入栈stack2.Push(".NET全栈课程25");stack2.Push(".NET全栈课程26");stack2.Push(".NET全栈课程27");stack2.Push(".NET全栈课程28");stack2.Push(".NET全栈课程29");//元素出栈Console.WriteLine(stack2.Pop());Console.WriteLine(stack2.Pop());Console.WriteLine(stack2.Pop());Console.WriteLine(stack2.Pop());Console.WriteLine(stack2.Pop()); }}
}