C#泛型类型是一种高效、强类型和可重用的代码编写方式,其中泛型类型参数可以在运行时指定,达到代码重用和类型安全的目的。
常见的泛型类型
C#泛型类型中常见的有以下几种:
- 泛型类:在类定义时使用泛型类型参数,可以在运行时指定具体类型,使得类具有高复用性和通用性。
示例代码:
public class GenericClass<T>
{
private T _value;
public GenericClass(T value)
{
_value = value;
}
public void PrintType()
{
Console.WriteLine("Type of T is " + typeof(T));
}
public void PrintValue()
{
Console.WriteLine("Value of T is " + _value.ToString());
}
}
- 泛型方法:在方法定义时使用泛型类型参数,也可以在运行时指定具体类型,进一步提高代码灵活性和可读性。
示例代码:
public static T GenericMethod<T>(T value)
{
Console.WriteLine("Type of T is " + typeof(T));
return value;
}
- 泛型接口:可以在接口定义时使用泛型类型参数,使得实现接口的类可以在运行时指定具体类型,并实现泛型接口中的属性和方法。
示例代码:
public interface IGenericInterface<T>
{
T Value { get; set; }
void PrintType();
void PrintValue();
}
泛型类型用处
-
避免重复的代码:使用泛型类型可以避免编写类似的代码,提高代码重用性。
-
类型安全:泛型类型可以使用编译器进行类型检查,避免出现类型不一致的错误。
-
高性能:泛型类型可以优化运行时的性能,因为它们不会引入装箱和拆箱等额外的开销。
示例说明
- 实现一个泛型栈结构:
public class GenericStack<T>
{
private List<T> _list = new List<T>();
public void Push(T value)
{
_list.Add(value);
}
public T Pop()
{
if (_list.Count > 0)
{
T value = _list[_list.Count - 1];
_list.RemoveAt(_list.Count - 1);
return value;
}
else
{
throw new InvalidOperationException("Stack is empty.");
}
}
}
- 实现一个泛型单例模式:
public class Singleton<T> where T : new()
{
private static readonly Lazy<T> _instance = new Lazy<T>(() => new T());
public static T Instance
{
get { return _instance.Value; }
}
}
以上是关于C#泛型类型的简单讲解和示例说明,希望能够帮助您更好地理解和应用泛型类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#泛型类型知识讲解 - Python技术站