C#泛型学习实例(简单易懂)
2010-12-10 10:37
274 查看
默认分类 2009-09-23 21:04:59 阅读62 评论0 字号:大中小 订阅
/*
* Created by SharpDevelop.
* User: Administrator
* Date: 2008/9/4
* Time: 上午 10:40
* 泛型(gereric)
*/
using System;
class Stack
{
private int[] items;
private int count;
public Stack(int size)
{
items=new int[size];
count=0;
}
public void Push(int x)
{
items[count++]=x;//這時是先賦值再進行自加運算
}
public int Pop()
{
return items[--count];//先自減再返回值
}
}
class Test
{
static void Main()
{
Stack s=new Stack(10);
s.Push(111);//先壓入111
s.Push(222);//再壓入222
Console.WriteLine(s.Pop().ToString());
Console.WriteLine(s.Pop().ToString());
/*
* 輸出結果為
* 222
* 111
* 這個程序演示了棧(Stack)的先進後出的原理
*/
}
}
/*
* Created by SharpDevelop.
* User: Administrator
* Date: 2008/9/4
* Time: 上午 10:40
* 泛型(gereric)
* 現在需要改變我們希望可以傳入float類型的數據
* 因此我們使用了弱類型的object,這時候我們傳入
* 的參數就可以是整行和其它類型的數據.
*
* 因為需要經過四次裝箱和拆箱操作,性能也就不是很好.
* 當然是說大量的數據情況下
*/
using System;
class Stack
{
private object[] items;
private int count;
public Stack(int size)
{
items=new object[size];
count=0;
}
public void Push(object x)
{
items[count++]=x;//這時是先賦值再進行自加運算
}
public object Pop()
{
return items[--count];//先自減再返回值
}
}
class Test
{
static void Main()
{
Stack s=new Stack(10);
s.Push(111.1);//裝箱
s.Push(222.2);//裝箱
Console.WriteLine((double)s.Pop()+(double)s.Pop());//兩次折箱
}
}
/*
* Created by SharpDevelop.
* User: Administrator
* Date: 2008/9/4
* Time: 上午 11:01
* 泛型(gereric)
* 解決了性能上的問題,同時寫程序也會覺的更方便
* 它引進行了一個類型參數
*/
using System;
class Stack<T>//聲明泛型
{
private T[] items;
private int count;
public Stack(int size)
{
items=new T[size];
count=0;
}
public void Push(T x)
{
items[count++]=x;//這時是先賦值再進行自加運算
}
public T Pop()
{
return items[--count];//先自減再返回值
}
}
class Test
{
static void Main()
{
Stack<int> s=new Stack<int>(10);
s.Push(111);
s.Push(222);
Console.WriteLine(s.Pop()+s.Pop());
}
}
/*上面使用了泛型,這樣提高了程序的性能,不再需要進行裝箱和拆箱的動作
*
* 如果我們現在需要使用小數只需要把泛型的類型參數改為double就可以了.
*
*
* */
/*
* Created by SharpDevelop.
* User: Administrator
* Date: 2008/9/5
* Time: 上午 11:32
* 兩個泛型參數的例子,通常用<T,S>
*/
using System;
public class Stu<T,S>
{
private T name;
private S age;
public Stu(T Name,S Age)
{
this.name=Name;
this.age=Age;
}
public void Show()
{
Console.WriteLine("姓名是:{0},年齡:{1}",name,age);
}
}
class Test
{
static void Main()
{
Stu<string,int> t=new Stu<string,int>("Athrun",26);
t.Show();
}
}
相关文章推荐
- egg学习——简单实例
- DataGrid实例(简单易懂,无复杂功能,适合初学者)
- 三大框架学习:Struts2简单入门(通过一个简单的登陆实例详解)
- MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
- 学习新事物:使用jquery+xml实现ajax简单实例
- Python学习笔记-Turtle库简单实例之日期时间显示
- 最简单易懂的RxJava2.0学习教程之RxJava2的线程调度(二)
- Android学习之获取 电池电量 简单实例
- JS学习之表格的排序简单实例
- 从语言学习实例第二天(简单小程序)
- (Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解
- 设计模式学习(二):接口的作用1-动态加载实例-简单工厂模式
- hadoop学习(5)—— 伪分布下运行一个简单的实例
- Hibernate 学习笔记-1-1(一个简单的Hibernate实例)
- Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
- 【Android学习日记】(六) SQLite的简单实例
- mybatis学习一(最简单的实例)
- Ant学习--简单实例入门
- Android多媒体学习一:Android中Image的简单实例
- 学习笔记:JAVA RMI远程方法调用简单实例