C#泛型学习实例(简单易懂)
默认分类 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();
}
}
转载于:https://www.cnblogs.com/aqi0530/archive/2010/12/10/1902043.html
C#泛型学习实例(简单易懂)相关推荐
- 【转】JS回调函数--简单易懂有实例
JS回调函数--简单易懂有实例 初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数. 我们先来看看回调的英文定义:A callback is a function that is ...
- 一、css清除浮动方法学习笔记总结(超详细,简单易懂)
** css清除浮动方法学习笔记总结(超详细,简单易懂) ** 问题: 上图中,由于container(父级元素)未设置高度,其内部子元素设置了float浮动,导致与container同级(也就是co ...
- matlab exm,exm 《Experiments with MATLAB》这本书的程序源码,附中文注释,简单易懂,是学习 238万源代码下载- www.pudn.com...
文件名称: exm下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 1154 KB 上传时间: 2014-11-21 下载次数: 6 提 供 者: 刘晏池 详细 ...
- 亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像)
亲测简单易懂可用:阿里云OSS入门实战2(集成到SpringBoot项目中存放用户头像) 大噶好,我们继续延续上一章,学习如何使用OSS存放用户头像代码示例; 在application.propert ...
- 涵盖 14 大主题!最完整的 Python 学习实例集来了!
机器学习.深度学习最简单的入门方式就是基于 Python 开始编程实战.最近闲逛 GitHub,发现了一个非常不错的 Python 学习实例集,完全是基于 Python 来实现包括 ML.DL 等领域 ...
- 深度学习之生成对抗网络(1)博弈学习实例
深度学习之生成对抗网络(1)博弈学习实例 博弈学习实例 在 生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单, ...
- python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)
开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍.Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且 ...
- 机器学习经典算法决策树原理详解(简单易懂)
↑ 点击上方[计算机视觉联盟]关注我们 最经典的决策树算法有ID3.C4.5.CART,其中ID3算法是最早被提出的,它可以处理离散属性样本的分类,C4.5和CART算法则可以处理更加复杂的分类问题, ...
- 公式太多,读不懂? 一文带你领略KNN近邻算法~简单易懂
↑ 点击上方[计算机视觉联盟]关注我们 K近邻算法采用测量不同特征值之间的距离方法进行分类. K-近邻算法工作原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知 ...
最新文章
- Linux 创建用户分配文件夹权限
- VSTS Code Analysis 错误 CA1014 CLSCompliantAttribute 及Suppress Message (镇压Code Ananlysis)...
- 如何快速高效读懂1本书
- JS判断一个数组中是否有重复值的三种方法
- Win7下搭建外网环境的SVN服务器
- abovedisplayskip无效_latex公式图片行间距段间距调整心得 -
- kubernetes资源--RC和RS
- vue + wangeditor封装富文本组件
- 简单实现x的n次方pta_Day12 :数值的整数次方
- ASP.NET Core的路由[2]:路由系统的核心对象——Router
- ORACLE执行计划中的执行顺序
- Js中apply和call
- Vulnhub-Moneybox
- 苹果修复用户位置有关的安全漏洞,苹果Find My帮你防丢
- 量子计算的基本概念:量子位、量子纠缠、量子比特、量子算法
- 【OBS Studio】脚本自动生成大量场景思考实践
- 引力波探测,冷冻电镜研究:两项诺奖GPU功不可没
- 【转】博弈论中的几个经典问题
- 2022年天梯赛题目记录
- 静态时序分析(STA) —— 时序检查