当前位置: 首页 > 编程日记 > 正文

C#精髓【月儿原创】第三讲 C#泛型有什么好处

说明:准备出一个系列,所谓精髓讲C#语言要点。这个系列没有先后顺序,不过尽量做到精。可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注。

C#精髓

第三讲 C#泛型有什么好处

作者:清清月儿

主页:http://blog.csdn.net/21aspnet/           时间:2007.3.24

关于object类型:
1.object类型可以来引用任何类型的实例;
2.object类型可以存储任何类型的值;
3.可以定义object类型的参数;
4.可以把object作为返回类型。
但是--这样做有很大的问题

1.会因为程序员没有记住使用的类型而出错,造成类型不兼容;
2.值类型和引用类型的互化即装箱拆箱使系统性能下降。

C#2.0提出的泛型就是避免强制类型转换,减少装箱拆箱提高性能,减少错误。

System.Collections.Generic命名空间提供许多集合类和接口的泛型版本。

定义:
public class GenericList<T>
{
    public void Add(T input)//T制定成类型参数
    public T Add()//T制定成返回值
}
<T>的T是类型参数,起占位符的作用,编译时被真正类型取代

使用泛型:
GenericList<int> list1 = new GenericList<int>();
GenericList<string> list2 = new GenericList<string>();
GenericList<类名> list3 = new GenericList<类名>();
GenericList<类名<int>> list4= new GenericList<类名<int>>();
以list1为例编译器生成以下的方法:
    public void Add(int input)
    public int Add()

有多个类型参数的泛型类:
public class 类名<T,U>

泛型约束:
确保泛型类使用的参数是提供特定方法的类型。
public class GenericList<T> where T : IEmployee
假如IEmployee接口包含A方法,编译器会验证用于替换T的类型一定要实现IEmployee接口。

泛型方法:允许采取定义泛型类时采用的方式
//定义泛型方法
static void Swap<T>(ref T lhs, ref T rhs)
{ T temp; temp = lhs; lhs = rhs; rhs = temp; }
//使用泛型方法
public static void TestSwap(){    int a=1,b=3;
Swap<int>(ref a,ref b);


string s1="Hello",s2="world";
Swap<string>(ref s1,ref s2);}
有泛型类,泛型接口,泛型方法,泛型委托

相关文章:

腾讯汤道生:人工智能最大的价值是“服务于人”

7月9日&#xff0c;2021世界人工智能大会腾讯论坛在上海拉开帷幕&#xff0c;腾讯高级执行副总裁、云与智慧产业事业群CEO汤道生开场致辞。汤道生表示&#xff0c;人工智能的最大价值是“服务于人”&#xff0c;让衣食住行实现“以消费者为中心”的智慧化供给&#xff0c;让生产…

[转]在Eclipse中使用JUnit4进行单元测试(中级篇)

我们继续对初级篇中的例子进行分析。初级篇中我们使用Eclipse自动生成了一个测试框架&#xff0c;在这篇文章中&#xff0c;我们来仔细分析一下这个测试框架中的每一个细节&#xff0c;知其然更要知其所以然&#xff0c;才能更加熟练地应用JUnit4。 一、 包含必要地Package…

linux下磁盘镜像软件DRBD的使用

一、 什么是DRBD DRBD的全称为&#xff1a;Distributed Replicated Block Device (DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成&#xff0c;用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与…

ASP.NET2.0轻松搞定统计图表【月儿原创】

ASP.NET2.0轻松搞定统计图表 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.3.27 本文讲述如何绘制条形图&#xff0c;折线图&#xff0c;柱形图&#xff0c;面积图等常见图形。 效果图&#xff1a; 手把手…

基于 Python 的 8 种常用抽样方法

抽样是统计学、机器学习中非常重要&#xff0c;也是经常用到的方法&#xff0c;因为大多时候使用全量数据是不现实的&#xff0c;或者根本无法取到。所以我们需要抽样&#xff0c;比如在推断性统计中&#xff0c;我们会经常通过采样的样本数据来推断估计总体的样本。上面所说的…

RegularExpressions(4) RegularExpressions 成员(一)

为什么80%的码农都做不了架构师&#xff1f;>>> 主要成员有: IRegex、ICapture、IMatch、IMatchCollection、IGroup、IGroupCollection 先看: ICapture; 常用的 IMatch、IGroup 都是从它继承而来; 作为一个底层接口一般不会被直接使用. 它为 IMatch、IGroup 提供了…

公有云环境下应用程序的自动化部署与水平扩展问题

先介绍了一下公有云计算环境下的一些特点&#xff0c;再根据这些特点探讨一下作为云计算用户而言&#xff0c;如何对应用程序做好自动化部署和水平扩展&#xff08;弹性计算&#xff09;的问题。阅读本文需要有一定的云计算知识、开发运维知识。 公有云环境的优势及其特点 公有…

另辟蹊径创建移动应用:iOS和Android代码共享

2019独角兽企业重金招聘Python工程师标准>>> 过去几年&#xff0c;移动应用席卷了整个世界&#xff0c;在工作和生活的方方面面改变着我们使用互联网的方式。创建移动应用的各种技术也随之兴起&#xff0c;各种开发流程也 将移动应用视为一等公民&#xff0c;开始考…

从0开始,基于Python探究深度学习神经网络

来源 | Data Science from Scratch&#xff0c; Second Edition作者 | Joel Grus全文共6778字&#xff0c;预计阅读时间50分钟。深度学习1. 张量2. 层&#xff08;Layer&#xff09;的抽象3. 线性层4. 神经网络作为一个层的序列5. 损失和优化6. 示例&#xff1a;XOR 重新…

ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】

ASP.NET2.0雷霆之怒盗链者的祝福 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.3.28 所谓盗链就是指其他网站把我们站点的文件链接帖到他们站上&#xff0c;这样白白占用我们的带宽。访问对于网站盗链行为&am…

数通手稿留档——BGP

本文转自Grodd51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/juispan/1954062&#xff0c;如需转载请自行联系原作者

ASP.NET2.0打通文件图片处理任督二脉【月儿原创】

ASP.NET2.0打通文件图片处理任督二脉 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.1 1.最简单的单文件上传(没花头)2.多文件上传3.客户端检查上传文件类型(以上传图片为例)4.服务器端检查上传文件类型(以上…

PaaS变厚了

通过与包括东方通等在内的众多厂商的合作&#xff0c;华云数据的运营型PaaS变得越来越厚实。借助PaaS Plus的推出&#xff0c;华云数据要把云化的工作前移&#xff0c;在产品开发和测试阶段就开始云化&#xff0c;这会让传统企业的云化取得更好的效果。“PaaS是个筐&#xff0c…

国内首个零信任技术标准发布 腾讯安全牵头编制

7月7日&#xff0c;中国电子工业标准化技术协会发布了国内首个零信任技术实现标准——T/CESA 1165-2021《零信任系统技术规范》团体标准&#xff0c;填补了国内零信任领域的技术标准空白。 &#xff08;《零信任系统技术规范》&#xff09; 据悉&#xff0c;该标准由腾讯安全牵…

集群概述及原理笔记(1)

it你好linux学习文档之集群概述及原理笔记(1) 一 前言 目前&#xff0c;越来越多的网站采用Linux操作系统&#xff0c;提供邮件、Web、文件存储、数据库等服务。也有非常多的公司在企业内部网中利用Linux服务器提供这些服务。随着人们对Linux服务器依赖的加深&#xff0c;对其…

ASP.NET2.0 遍历文件夹下所有图片【月儿原创】

ASP.NET2.0 遍历文件夹下所有图片 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.4 1.以下目录有若干图片&#xff08;都是大图片&#xff09; 2.在页面展现效果图 3.代码 后台代码using System;using Sy…

如何看待那些互相矛盾的论文?

原文&#xff1a;How to Make Sense of Contradictory Science Papers作者&#xff1a;Haixin Dang&#xff08;利兹大学博士后研究员&#xff09;、Liam Kofi Bright&#xff08;伦敦经济学院的哲学系助理教授&#xff09;译者&#xff1a;武文浩相信你已经读到过一些相互矛盾…

gdb图形化调试工具总结

gdb除了命令行方式等的调试之外&#xff0c;还有图形化的调试工具&#xff0c;下面列举一些供参考 1&#xff1a;insight 2: ddd 3: kgdb 4: xxgdb 其它的工具欢迎补充

ATLAS入门篇之CascadingDropDown控件编程

一、引言本文将通过具体的步骤解释如何借助于数据库&#xff08;Microsoft SQL Server 2005 Express Edition&#xff09;数据创建一个ASP.NET AJAX 1.0 CascadingDropDown控件。在本文示例中&#xff0c;我们将使用此层叠下拉列表框控件来选择要显示的汽车模型信息。【作者注】…

ASP.NET2.0 永恒密码之戒【月儿原创】

ASP.NET2.0 永恒密码之戒 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.8 1.我们经常有这样的情形&#xff1a; 就是用户注册时由于某个信息填写错误要重新填写。但是这个过程经过了服务器PostBack。所以密码…

GitHub 遭抵制!AI 代码生成神器竟成“抄袭工具”?

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;上周&#xff0c;微软、GitHub、OpenAI 三方联手推出的 AI 代码生成神器 GitHub Copilot 一经官宣便引起巨大关注&#xff1a;试问哪个开发者不想要这么一位“虚拟程序员”来解放自己的双手&#xff1f…

LAMP的安装及Xcache的配置

LAMP是LinuxApacheMySQLPHP的简称&#xff0c;意指以Linux作为服务器的操作系统&#xff0c;以Apache的HTTPD作为Web服务器&#xff0c;以PHP作为动态网页的解释器&#xff0c;以MySQL作为后端数据库管理系统&#xff0c;由此而搭建起来的一套Web服务器系统。为方便起见&#x…

Windows Server 2003 AD升级到Windows Server 2008 AD的方法及详细步骤

前言&#xff1a; Windows Server 2008 是现在企业比较流行的服务器操作系统&#xff0c;安全性高&#xff0c;配置灵活、方便&#xff0c;集成了Hyper-V虚拟化功能&#xff0c;能够充分发挥硬件的性能。Windows Server 2008改写了底层的网络传输代码&#xff0c;理论上&#x…

ASP.NET2.0 ReportingServices使用详解

ASP.NET2.0 ReportingServices使用详解 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.9本文先做个简单介绍&#xff0c;更多关于ReportingServices的文章见后续。 1.打开BIDS,这是报表开发工具 2.新建项目 3.选择…

输出程序运行的时间(精确到微秒)

对于要求性能的代码&#xff0c;输出程序运行的时间还是很有必要的&#xff0c;而且需要较高的精确度&#xff0c;下面这个代码段就实现了此功能 注意&#xff1a;只限于Linux下使用&#xff0c;因为<sys/time.h>的缘故 1 #include <sys/time.h>2 #include <ios…

售前比售后机器人控制逻辑更复杂,仅凭大规模数据后发优势难赶超!

实现人与机器的自然交互&#xff0c;一直以来都是全世界人类的共同愿望&#xff0c;无数科学家倾尽毕生精力致力于实现这个目标。语言&#xff0c;作为人与外界交流最有效的工具&#xff0c;成为机器智能的重点研究对象&#xff0c;而对话型机器人则成为实现人机交互最早的突破…

JAVAEclipse:could not find the main class,program will exit!

JAVAEclipse:could not find the main class,program will exit! 遇到这个错误主要是当前的工程的jdk与eclipse的版本配置不匹配造成的&#xff0c;修改方法如下&#xff1a; 在当前工程点右键选择Properties->Java Compiler->选中Enable project specific settings->…

ASP.NET2.0 文本编辑器FCKeditor的冰冷之心 【月儿原创】

ASP.NET2.0 文本编辑器FCKeditor的冰冷之心 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.9 FCKeditor是目前最好的html文本编辑器&#xff0c;如果还不明白的话看了下图就知道了效果图: 那么为什么说是FC…

转:strcat与strcpy与strcmp与strlen

转自&#xff1a;http://blog.chinaunix.net/uid-24194439-id-90782.html strcat 原型&#xff1a;extern char *strcat(char *dest,char *src);用法&#xff1a;#include <string.h>功能&#xff1a;把src所指字符串添加到dest结尾处(覆盖dest结尾处的\0)并添加\0。说明…

2021 EdgeX中国挑战赛盛大开幕,英特尔赋能开发者,助力创新方案落地

2021年7月12日&#xff0c;北京中关村论坛隆重举行。论坛上&#xff0c;英特尔研究院副总裁、英特尔中国研究院院长宋继强博士&#xff0c;北京市科委、中关村管委会高科技产业促进中心主任徐剑发表致辞并联合Linux基金会、VMware威睿等单位代表共同宣布2021 EdgeX中国挑战赛开…