理论:所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。
只看概念很晕,OK,写了一段代码,一看就知道了:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TestStack<int> myTestStack = new TestStack<int>(3);//整形实例化
TestStack<string> myTestStack2 = new TestStack<string>(3);//字符串实例化
private void button1_Click(object sender, EventArgs e)
{
myTestStack.Push(1);
myTestStack.Push(2);
myTestStack2.Push("韩晓鹏");
myTestStack2.Push("黄萍");
}
private void button2_Click(object sender, EventArgs e)
{
if (myTestStack.size > 0)
{
MessageBox.Show(myTestStack.Pop().ToString());
}
else
{
MessageBox.Show("没有整形啦");
}
}
private void button3_Click(object sender, EventArgs e)
{
if (myTestStack2.size > 0)
{
MessageBox.Show(myTestStack2.Pop().ToString());
}
else
{
MessageBox.Show("没有字符串啦");
}
}
}
public class TestStack<T>///定义一个栈
{
private T[] store;//栈的存储器
public int size;//栈的指针
/// <summary>
/// 构造函数
/// </summary>
/// <param name="n">初始化大小</param>
public TestStack(int n)
{
store = new T[n];
size = 0;//指向第一个位置
}
/// <summary>
/// 进栈
/// </summary>
/// <param name="x"></param>
public void Push(T x)
{
store[size++] = x;
}
/// <summary>
/// 出栈
/// </summary>
/// <param name="x"></param>
public T Pop()
{
return store[--size];
}
}
}
以上代码测试环境vs2005,三个按钮,一个进栈,两个为出栈。
有问题联系老韩。