C#泛型语法详解
1.泛型的概念
C#中的泛型是指一种可以将类型参数化的特性。泛型提供了一种创建可重用、类型安全的代码的方法,可以大大简化代码的编写过程。泛型还可以帮助我们避免在强类型语言中最常见的类型转换问题。
2.泛型类型
泛型类型是具有一般性的类型定义,包含泛型类型参数。定义泛型类型可以使用T或其他名字作为泛型类型参数。
public class MyList<T>
{
private T[] _items;
private int _currentIndex;
public MyList()
{
_items = new T[10];
_currentIndex = 0;
}
public void Add(T item)
{
_items[_currentIndex] = item;
_currentIndex++;
}
public T Get(int index)
{
return _items[index];
}
}
这个例子中,我们定义了一个类MyList,通过泛型类型参数T来定义了这个类的类型。
3.泛型方法
泛型方法是一个在调用时指定类型参数的方法。可以在普通或泛型类型中声明泛型方法。泛型方法的类型参数与泛型类型参数的语法相同。
public class Utils
{
public static void Swap<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
}
这个例子中,我们定义了一个静态方法Swap,该方法的类型参数T被指定为方法参数的类型。
调用这个方法的示例:
int a = 1;
int b = 2;
Utils.Swap(ref a, ref b);
4.泛型约束
使用泛型类型参数时,可以使用泛型约束来限制T的类型。可以使用where关键字指定约束类型。
public class Player<T> where T : IShootable
{
private T _shootable;
public Player(T shootable)
{
_shootable = shootable;
}
public void Shoot()
{
_shootable.Shoot();
}
}
public interface IShootable
{
void Shoot();
}
public class Gun : IShootable
{
public void Shoot()
{
Console.WriteLine("Shoot with a gun.");
}
}
这个例子中,我们定义了一个泛型类Player,它的类型参数T必须实现IShootable接口,我们使用where关键字来指定约束类型。
示例:
var gun = new Gun();
var player = new Player<Gun>(gun);
player.Shoot();
总结
泛型是C#中非常重要的特性,它提供了一种创建可重用、类型安全的代码的方法。通过本文的介绍,你已经了解了泛型的基础知识,包括泛型类型、泛型方法和泛型约束等。希望这篇文章能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#泛型语法详解 - Python技术站