泛型笔记

所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型。(类型的 多态) 是一种编程范式,它利用“参数化类型”讲类型抽象化,从而实现更为灵活的复用。 1,可重用行 2,类型安全(在编译期间发现问题,而不是在运行的时候) 3,效率更高(避免装箱,拆箱的操作) 类型参数的命名准则: 1 务必使用描述性名称命名泛型类型参数 2 考虑使用T作为具有单个字母类型参数的类型参数名 3 务必将“T”作为前缀 CLASS C{} CLASS D:C{} CLASS E:C{} CLASS F:C{} CLASS G:C{} //非法 因为非泛型类型继承了未被实例化得泛型类 c#除可单独声明泛型类型(包括类和结构)外,也可在基类中包含泛型类型得声明 。但基类如果是泛型类,它的类型参数要么已实例化,要么来源于子类(同样是泛 型类型)声明的类型参数。 泛型类型的成员 Class C{ PUBLIC V f1; PUBLIC D f2; PUBLIC C(V x){ This.f1=x; } } 泛型类型的成员可以使用泛型类型声明中的类型参数。但类型参数如果没有任何约 束,则只能在该类型上使用从SYSTEM.OJBECT继承的共有成员。 泛型接口 interface ILIST{ T[] GetElements(): } interface IDictionary{ void Add(K key,V value) } class List:IList,IDictionary{ public T[] GetElements(){return null;} public void Add(int index,T value){} } 泛型接口的类型参数要目已实例化,要么来源于实现类声明的类型参数 泛型方法的声明与调用 public calss Finder{ public static int Find(T[] items,T item){ for(int i=0;i(new int[]{1,2,3,4,5,6,8,9}, 6); 泛型方法的重载 class Myclass{ void F1(T[] a,int i); //不可以构成重载方法 void F1(U[] a,int i); void F2(int x); //可以构成重载方法 void F2(int x); void F3(T t) where T:A; //不可以构成重载方法 void F3(T t) where T:B; } 泛型方法的重写 abstract class Base{ public abstract T F(T t,U u) where U:T; public abstract T G(T t) where T:IComparable; } class Derived:Base{ //合法的重写,约束被默认继承 public override X F(X x,Y y){} //非法的重写,指定任何约束都是多余的 public override T G(T t) where T:Icomparable{} } 泛型约束 1。对“所有泛型类型或泛型方法的类型参数”的任何假定,都要基于“显示的约束”, 以维护类型安全 2。“显示约束”由WHERE字句表达,分为4种 基类约束 接口约束 构造器约束 值类型/引用类型约束

转载于:https://www.cnblogs.com/bloodycool/archive/2006/09/05/495161.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程创建fork-小代码

进程创建fork #include <sys/types.h> #include <unistd.h> pid_t fork(viod) 返回值&#xff1a;,在子进程中返回0&#xff1b;在父进程中返回大于0的进程号&#xff1b;小于0&#xff0c;出错。 fork()函数调用一次&#xff0c;返回两次&#xff0c;分别是在子进…

给有钱人办教育

今天&#xff0c;看新闻上&#xff0c;报道了&#xff0c;贷款利率又上升了。这 年头&#xff0c;什么都上涨&#xff0c;物价&#xff0c;房价&#xff0c;粮价&#xff0c;失业率也在逐年攀升&#xff0c;唯一不上涨的就是工资了&#xff0c;反而有很多很多的大学生正一次又一…

进程创建fork--文件表项继承

进程创建fork–文件表项继承 子进程继承父进程的文件描述表&#xff0c;不继承共享文件表项和iNode。 父进程创建一个子进程后&#xff0c;文件表项中的引用计数器加1变为2&#xff0c;当父进程操作close操作后&#xff0c;计数器减1&#xff0c;子进程还是可以使用文件表项&am…

论ACM ICPC_Ruins He

这段时间老是有许多新人向我问到ACM相关的问题。比如它与工作的关系&#xff0c;对我以后的工作到底有没有帮助&#xff1f;还比如说第二年的训练计划应该是什么样的&#xff1f;还有的孩子问到&#xff0c;我寒假玩儿的一个寒假&#xff0c;又该怎么办&#xff1f; 看到这些问…

查询分析器下如何备份数据库

查询分析器下如何备份数据库backupdatabasemsdb todiskd:\msdb.bakOK搞定转载于:https://www.cnblogs.com/CnKker/archive/2006/09/26/515318.html

Inside Dynamics Axapta源代码赏析(四)

第八章:Developing Applications Using Business Connector 这一章的代码主要演示如何通过Business Connector与Axapta交互在Dynamics Axapta的客户端安装目录中找到Microsoft.Dynamics.BusinessConnectorNet.dll这个文件,添加到VS.NET的工程中.1.HelloWorldBC.csclassHelloWor…

uva 1629——Cake slicing

题意&#xff1a;有一个n行m列网格蛋糕上有一些樱桃&#xff0c;每次可以把蛋糕一刀切成两块&#xff0c;最后使每块蛋糕上都有一个樱桃且切割线总长度最小。 思路&#xff1a;区间dp&#xff0c;记忆化搜索整个过程&#xff0c;然后分区间从上到下&#xff0c;从左到右&#x…

信号之SIGCHLD

信号之SIGCHLD SIGCHLD信号是子进程结束时发出来的信号&#xff0c;可用于在程序中捕获子进程结束的信号然后用wait函数将子进程资源回收。 优点&#xff1a;不会使父进程一直阻塞在wait函数处。 #include <signal.h> #include <stdio.h> #include <string.h&g…

uva 242——Stamps and Envelope Size

题意&#xff1a;给定最大贴邮票上限和若干个邮票组合&#xff0c;求最大的连续邮资的一个组合&#xff0c;如果有多个&#xff0c;按字典序输出最大的一个。 思路&#xff1a;对每一组邮票&#xff0c;求出当邮资为i时需要邮票数的最小值d[i]&#xff0c;边界为d[0]0、d[i]>…

js常用

//关闭,父窗口弹出对话框,子窗口直接关闭this.Response.Write("<script languagejavascript>window.close();</script>");//关闭,父窗口和子窗口都不弹出对话框,直接关闭this.Response.Write("<script>");this.Response.Write("{to…

信号之kill-raise

信号之kill-raise kill(),raise()都是信号发送函数 #include <signal.h> int kill(pid_t pid, int signo); kill函数向指定的进程发送信号。 int raise(int signo); raise函数向本进程发送信号,相当于kill(getpid(), int signo). #include <sys/types.h> #include…

Google 代码搜索

今天在CSDN上看到的消息&#xff0c;google推出了CodeSearch的服务&#xff0c;上去一测试&#xff0c;吓死我了&#xff01; 代码的秘密全无了&#xff01; http://www.google.com/codesearch/ 你可以试试你的代码看看&#xff01; 比如&#xff1a;搜索以下&#xff1a;on er…

uva 10723——Cyborg Genes

题意&#xff1a;输入两个A-Z组成的字符串&#xff0c;找到一个最短的串&#xff0c;使得两个串均是他的子串。 思路&#xff1a;最长公共序列问题。当i和j相等时&#xff0c;dp[i][j]dp[i-1][j-1]&#xff0c;不等时就是max(dp[i-1][j],dp[i][j-1]),如果当前的统计的数量大于s…

信号之函数的可重入性

信号之函数的可重入性 在调用某个函数过程中出现中断信号&#xff0c;且改信号处理函数中再次调用该函数&#xff0c;访问全局、静态变量的函数是不可重入函数。 前后数据不一致&#xff0c;函数是不可重入的&#xff0c;特点&#xff1a;函数中使用全局变量或静态变量。 前后数…

ASP.NET 中处理页面“回退”的方法

我们在编写基于 ASP.NET 的应用程序时&#xff0c;如果代码执行出错或检测到异常&#xff0c;一般会提示用户“返回”或“回退”&#xff0c;或者在多步操作、列表/详细的查看界面中&#xff0c;也会给用户提供回退到上一页面的链接&#xff0c;对于这种情况&#xff0c;大家很…

uva 1631——Locker

题意&#xff1a;有一个n位的密码锁&#xff0c;每位都是0——9可以循环旋转&#xff0c;每次可以往上或者往下旋转一下&#xff0c;然后给定初始状态和末状态求最小旋转步数。 思路&#xff1a;递推&#xff0c;dp&#xff08;i&#xff0c;x&#xff0c;y&#xff09;表示翻到…

socekt编程-select

摘抄自 https://blog.csdn.net/lovekun1989/article/details/41042273 https://blog.csdn.net/Ctrl_qun/article/details/52524086 分为无select和有select版本&#xff0c;无select只能一个服务端一个客户端&#xff0c;有select能一个服务端对应多个客户端。 无select&#x…

uva 1632——Alibaba

题意&#xff1a;直线上有n个点&#xff0c;其中第i个点的坐标是xi&#xff0c;且他会在di秒后消失&#xff0c;阿里巴巴可以从任意位置出发&#xff0c;求访问过所有节点的最短时间&#xff0c;不能输出-1&#xff1b; 思路&#xff1a;01背包问题&#xff0c;dp&#xff08;i…

忙活了,暂时歇笔

估计近期活忙起来&#xff0c;有活忙就好&#xff0c;埋头不用想什么。所以暂时歇笔。估计有一段时间才更新。 转载于:https://www.cnblogs.com/zuolun/archive/2006/10/25/540051.html

CentOS7.6安装MYSQL8.0的步骤详解

转载 https://www.jb51.net/article/174536.htm