C# 泛型
来源:互联网 发布:ubuntu 安装分区建议 编辑:程序博客网 时间:2024/05/22 04:32
例子如下:
static void Main(string[] args) { int x=5, y=10; Swqp<int>(ref x, ref y); Console.WriteLine("{0},{1}",x, y); String st1 = "abc", st2 = "xyz"; Swqp<string>(ref st1, ref st2); Console.WriteLine("{0},{1}", st1, st2); } static void Swqp<T>(ref T a, ref T b) { T temp; temp = a; a = b; b = temp; }
这也是泛型的使用,通过函数添加二叉树的节点。
public class Tree<TItem> where TItem:IComparable<TItem> { public TItem NodeData { get; set; } public Tree<TItem> LeftTree { get; set; } public Tree<TItem> RightTree { get; set; } public Tree(TItem nodeValue) { this.NodeData = nodeValue; this.LeftTree = null; this.RightTree = null; } public void Insert(TItem newItem ) { TItem currentNodeValue = this.NodeData; if (currentNodeValue.CompareTo(newItem) > 0) { if (LeftTree == null) { this.LeftTree = new Tree<TItem>(newItem); } else { this.LeftTree.Insert(newItem); } } else { if (RightTree == null) { this.RightTree = new Tree<TItem>(newItem); } else { this.RightTree.Insert(newItem); } } } public void WalkTree() { if (this.LeftTree != null) { LeftTree.WalkTree(); } Console.WriteLine(this.NodeData.ToString()); if (this.RightTree != null) { RightTree.WalkTree(); } } }
class Program { static void Main(string[] args) { /* Tree<int> t = new Tree<int>(10); t.Insert(4); t.Insert(3); t.Insert(5); t.Insert(14); t.Insert(25); * t.WalkTree(); */ Tree<char> charTree = new Tree<char>('M'); InsertIntoTree<char>(charTree, 'A', 'B', 'O', 'N', 'Z', 'C'); charTree.WalkTree(); } static void InsertIntoTree<TItem>(Tree<TItem> tree, params TItem[] data) where TItem :IComparable<TItem> { if (data.Length == 0) throw new ArgumentException("most provide at least on data value"); foreach(TItem datum in data) { tree.Insert(datum); } }
泛型接口和泛型类
interface IWrapper<T> { void setData(T data); T GetData(); } class A<T> : IWrapper<T> { private T A_data; void IWrapper<T>.setData(T data) { this.A_data = data; } T IWrapper<T>.GetData() { return this.A_data; } }
static void Main(string[] args) { A<string> A_string = new A<string>(); IWrapper<string> Iw = A_string; Iw.setData("abc"); Console.WriteLine("{0}",Iw.GetData()); }
C#自带的队列,也可以使用泛型的形式来使用
using System.Collections;
static void Main(string[] args) { int a = 5; double b = 6; Queue <int>s = new Queue<int>();//表示是一个int类型的队列,只能存放int类型,不带泛型的存放的是object类型 s.Enqueue(a); // s.Enqueue(b);//存放double会出错 while (s.Count > 0) { Console.WriteLine(s.Dequeue().ToString()); } }
1 0
- C#泛型
- c#泛型
- C# 泛型
- C#泛型
- C# 泛型
- C#泛型
- C# 泛型
- C# 泛型
- C# 泛型
- c# 泛型
- C# 泛型
- C# 泛型
- C#泛型
- C# 泛型
- C# - 泛型
- C#泛型
- C#泛型
- C# 泛型
- 视频花屏分析
- Python的简单语法(上)
- 常见负载均衡算法的简介
- android模拟时分秒记时
- vue2.0开发入门笔记 之 .vue文件
- C# 泛型
- 三色旗问题
- css实现水平居中和垂直居中
- [笔记]:[字符串] kmp算法
- ssm+maven+bootstrap搭建
- 宠物商店项目分析
- Python的简单语法(下)
- python2.7在win10下中文汉字乱码处理
- kernel wifi 测试方法