详解C#中的泛型以及编程中使用泛型的优点

在编写程序时,经常会用到两个功能模块非常相似,只不过是一个处理int数据,另一个处理string数据,或者其他数据。如果没有泛型的特性,我们只能定义两个方法来处理,因为参数的类型是不一样的。泛型就是用来解决这一类问题的。我们通过一种通用的数据类型,让方法保持一致,这样就只用一个方法即可。

泛型类和泛型方法同时具备可重用性、类型安全和高效率,这是非泛型类和方法不具备的特性。泛型通常用在集合在集合上的运行的方法中。这些集合所在的命名空间System.Collections.Generic

所以定义一个Node类型,表示链表这种数据结构中的一个节点。由于这个节点中存储的数据不是确定的,而可能是任意一种数据类型,因此可以用泛型来定义这种数据。

public class Node<T>
{
	public Node(T t)
	{
		next = null;
		data = t;
	}
	private Node<T> Next
	{
		get { return next }
		set { next = value }
	}

	private T data;
	public T Data
	{
		get { return data; }
		set { next = value; }
	}

	private T data;
	public T data
	{
		get { return data; }
		set { data = value; }
	}
}

public class GenericDemo : MonoBehaviour 
{
	private void Start()
	{
		Node<int> intNode = new Node<int>(13);
		Node<bool> boolNode = new<bool>(false);
		Node<string> stringNode = new Node<string>("Geekanr");
	}
}

总结:

对Node中的数据data使用泛型来表示。在Start()方法中看到,定义Node的对象的时候,需要确定Node中所存储的数据类型。由于在定义的时候data的类型已经确定了,因此就不存在类型转换、装箱、拆箱等问题,因此泛型是类型安全高效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值