当前位置: 首页 > news >正文

c#泛型公共类示例

在C#中,泛型类是一种可以操作多种数据类型的类。这使得你可以编写更灵活、可重用的代码。泛型类通过在类名后使用尖括号<>和类型参数来定义。类型参数可以是具体的类型,如int或string,也可以是其他泛型类型,甚至是其他泛型类的类型参数。

下面是一些使用泛型类的示例:

示例 1:简单的泛型类
这个例子中,我们创建一个名为Box的泛型类,它可以存储任何类型的对象。

public class Box<T>
{
private T _content;

public Box(T content)
{
_content = content;
}

public T Content
{
get { return _content; }
set { _content = value; }
}
}
使用这个类的示例:

Box<int> intBox = new Box<int>(10);
Box<string> stringBox = new Box<string>("Hello, World!");

Console.WriteLine(intBox.Content);    // 输出: 10
Console.WriteLine(stringBox.Content); // 输出: Hello, World!
示例 2:具有多个类型参数的泛型类
你可以定义一个拥有多个类型参数的泛型类。例如,一个可以比较两个不同类型对象的类。

public class Comparer<T, U> where T : IComparable<U>
{
public int Compare(T a, U b)
{
return a.CompareTo(b);
}
}
使用这个类的示例:

Comparer<int, int> intComparer = new Comparer<int, int>();
Console.WriteLine(intComparer.Compare(5, 10)); // 输出: -1 (因为5小于10)
示例 3:使用泛型约束
在定义泛型类时,你可以指定类型参数必须满足的约束。例如,你可以要求类型参数必须是类、结构体、具有特定方法的类或实现特定接口的类。

public interface IPrintable { void Print(); }

public class Printer<T> where T : IPrintable // T必须是IPrintable类型或其子类
{
public void PrintObject(T obj)
{
obj.Print();
}
}
使用这个类的示例:

class MyClass : IPrintable 

public void Print() 

Console.WriteLine("Printing from MyClass"); 



Printer<MyClass> printer = new Printer<MyClass>(); 
printer.PrintObject(new MyClass()); // 输出: Printing from MyClass 
通过这些示例,你可以看到如何在C#中使用泛型类来创建灵活、可重用的代码。

http://www.xdnf.cn/news/1456363.html

相关文章:

  • Next.js App Router 中文件系统路由与页面跳转实践(以用户详情页面为例)
  • 1688拍立淘接口对接实战案例
  • Playwright-ui自动化工具
  • 如何设置PPTX的默认打开应用为PowerPoint
  • ​​AI生成PPT工具推荐,从此以后再也不用担心不会做PPT了​​
  • Effective Python 第10条 - 用赋值表达式减少重复代码
  • 股价暴跌后扔出 “王炸”,美团 LongCat 大模型到底是续命还是真有料?
  • Linux网络服务——基础设置
  • 【Kubernetes】知识点4
  • 吐槽一下福昕pdf阅读器高级专业版
  • git命令常用指南
  • openEuler2403安装部署Kafbat
  • 用遗传算法破解一元函数最大值问题:从原理到 MATLAB 实现
  • 关于多Agent协作框架的讨论:以产品经理工作流为例对比Sub Agent与AutoGen
  • 标注工具labelimg使用简介
  • 02-Media-4-mp4muxer.py 录制视频并保存为MP4文件的示例
  • 员工离职导致研发文档遗失的原因与防范方法
  • emmc擦写寿命-分区能拯救系统盘吗?
  • 日本移动应用市场营销分析:娱乐和金融应用增长强劲,游戏类广告支出最高!
  • Process Explorer 学习笔记(第三章3.1.2):管理权利与提权机制解析)
  • 高级RAG策略学习(二)——自适应检索系统原理讲解
  • 【第四章:大模型(LLM)】10.微调方法与实战-(3)P-tuning v2
  • 机器学习如何精准预测高值
  • JavaEE 进阶第二期:开启前端入门之旅(二)
  • 《A Study of Probabilistic Password Models》(IEEE SP 2014)——论文阅读
  • 随时随地写代码:Jupyter Notebook+cpolar让远程开发像在本地一样流畅
  • java面试中经常会问到的Redis问题有哪些(基础版)
  • Nano-banana 模型对接教程:最懂创作者的 AI 模型,比GPT-4o还强!
  • Redis(43)Redis哨兵(Sentinel)是什么?
  • 【OpenHarmony文件管理子系统】文件访问接口解析