// 定义一个泛型类,并添加约束,要求类型必须是类且实现IDisposable接口
public class GenericClass<T> where T : class, IDisposable
{
private T _item;
public GenericClass(T item)
{
_item = item;
}
public void DisposeItem()
{
if (_item != null)
{
_item.Dispose();
}
}
}
// 定义一个泛型方法,并添加约束,要求类型必须有无参构造函数
public class Helper
{
public T CreateInstance<T>() where T : new()
{
return new T();
}
}
// 使用泛型约束的示例
public class Program
{
public static void Main()
{
// 创建GenericClass实例,传递一个实现了IDisposable接口的对象
using (var gc = new GenericClass<System.IO.StreamReader>(new System.IO.StreamReader("file.txt")))
{
// 调用DisposeItem方法来释放资源
gc.DisposeItem();
}
// 创建Helper类的实例并调用CreateInstance方法创建一个新的对象
var helper = new Helper();
var instance = helper.CreateInstance<System.Text.StringBuilder>();
Console.WriteLine(instance.Capacity);
}
}
GenericClass<T> 类中使用了 where T : class, IDisposable 约束,这意味着泛型参数 T 必须是一个引用类型(即类),并且必须实现 IDisposable 接口。这样可以确保 _item 可以调用 Dispose 方法。Helper 类中的 CreateInstance<T> 方法使用了 where T : new() 约束,这意味着泛型参数 T 必须有一个无参构造函数。这样可以确保在运行时可以通过 new T() 创建一个新的实例。Main 方法中,我们展示了如何使用这些泛型类和方法。通过传递一个实现了 IDisposable 接口的对象给 GenericClass,并在需要时调用 DisposeItem 方法来释放资源。同时,我们也展示了如何使用 Helper 类创建一个新的 StringBuilder 实例。上一篇:c# xml转json
下一篇:c# 跳出for循环
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站