泛型的定义
泛型是一种程序特性,当我们使用泛型的时候,确切说定义的时候,是对这个类型不作出明确的规定。但是当我们使用的时候,必须明确规定,并且不能改变。
自定义泛型类测试
csharp
//自定义泛型类
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());
}
}
}