C#基础入门 八

泛型

  • C#中的泛型能够将类型作为参数来传递,即在创建类型时用一个特定的符号,如“T”来作为一个占位符,代替实际的类型,等待实例化时用一个实际的类型来代替。
public class Test<T>
{
public void Swap(T a,T b)
{
}
}
  • 使用泛型类型可以最大限度的重用代码、保护类型的安全以及提高性能
  • 降低了强制转换或装箱操作的成本或风险、可以对泛型进行约束以访问特定数据类型的方法
  • 实例化:Test<int> test1 = new Test<int>();
  • 注意:类型参数并不是只有一个,可以有多个,类型参数可以是编译器识别的任何类型,类型参数的名字不能随便起,不能重名。
public class Test<T,U>
{
public void Swap(T a, U b)
{ }
}
class MainClass
{ public static void Main(string[] args)
{
Test<int,double> test1 = new Test<int,double>();
test1.Swap(1, 2.33);
} }
  • public class Test<T>where T:struct代表类型参数T只能是值类型。public class Test<T>where T:class代表类型参数T只能是引用类型。

泛型类和泛型方法

  • 泛型类封装不是特定于具体数据类型的操作,泛型类最常用语集合,像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。
  • 创建泛型类的过程:从一个现有的具体类开始,逐一将每个类型更改为类型参数,直至达到通用化和可用性的最佳平衡。
class BaseNode
{
int a;int b;
}
class BaseNodeGeneric<T>
{
T a;T b;
}
 public class Person
{
public string name;
public int age;
public char sex;
public string Print(string c){
return c;
}
}
下一步:
public class Person<S,I,C>
{
public S name;
public I age;
public C sex;
public S Print(S c){
return c;
}
}
class MainClass
{
public static void Main(string[] args)
{
Person<string, int, char> person = new Person<string, int, char>();
Console.WriteLine(person.Print("zxh"));
}
}

C#基础入门 八的更多相关文章

  1. MyBatis基础入门《十八》动态SQL(if-where)

    MyBatis基础入门<十八>动态SQL(if-where) 描述: 代码是在<MyBatis基础入门<十七>动态SQL>基础上进行改造的,不再贴所有代码,仅贴改动 ...

  2. MyBatis基础入门《八》查询参数传入Map

    MyBatis基础入门<八>查询参数传入Map 描述: 在执行select查询数据的时候,方法传入的参数是java.util.Map类型. 接口方法: xml文件 注意: 书写SQL语句的 ...

  3. 小白学 Python 爬虫(41):爬虫框架 Scrapy 入门基础(八)对接 Splash 实战

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. SpringMVC基础入门

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  5. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  6. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

  7. SpringMVC基础入门,创建一个HelloWorld程序

    ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...

  8. Mysql的二进制安装和基础入门操作

    前言:Mysql数据库,知识非常的多,要想学精学通这块知识,估计也要花费和学linux一样的精力和时间.小编也是只会些毛皮,给大家分享一下~ 一.MySQL安装 (1)安装方式: 1 .程序包yum安 ...

  9. PHP基础入门(二)【PHP函数基础】

    PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...

随机推荐

  1. idea_pyspark 环境配置

    本文转载自:https://www.cnblogs.com/LazyJoJo/p/6910504.html 1.配置好Hadoop和spark 2.配置好Pytho3.5 3.安装py4j pip3 ...

  2. 十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)远程的监控工具连接到本地的JVM执行命令

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  3. JavaScript(三) - 精简

    javascript 对象 1 什么是对象? 对象只是一种特殊的数据,对象拥有属性和方法. 2 对象有哪些? js中所有的事物都是对象:字符串,数值,数组,函数. js允许自定义对象.提供多个内建对象 ...

  4. Eclipse使用xdoclet1.2.3 生成hibernate配置文件和映射文件

    用ant和xdoclet生成hibernate配置文件可以为我们省去很多配置的操作,废话不多说,直接给栗子: 测试环境: eclipse:Eclipse Java EE IDE for Web Dev ...

  5. clr相关的一些工具

    NGen.exe:将IL代码编译成本地代码. PEVerify.exe:它检查一个集所有方法并报告其中含不 的实用程序. ILDasm.ex:IL反编译 csc.exe:C#编译工具 ilasm.ex ...

  6. python变量作用域

    [python变量作用域] 几个概念: python能够改变变量作用域的代码段是def.class.lamda. if/elif/else.try/except/finally.for/while 并 ...

  7. shell中的字符串操作和数学运算

    字符串操作   变量赋值: 说明:变量值可以用单引号.双引号.或者不加任何引号来赋值给变量 变量名="变量值" 变量名='变量值' 变量名=变量值 例如:str="hel ...

  8. 使用javascript,jquery实现的图片轮播功能

    使用javascript,jquery实现的图片轮播功能本功能采用最基础的javascript和一些简单的jquery技术实现,易理解,以修改使用,代码简易,适合刚开始接触到网站开发的朋友们参考.可以 ...

  9. Android SDK Manager检查更新时遇到Failed to fetch URL xxxxxxx reason: Connection to xxxxxx的错误的解决办法!

    首先说明的是这个问题并不是每个人都存在,但是我和我的一个同学都有这种情况,所以我同学百度了一下,找出了解决办法. 问题描述: 使用Android SDK Manager检查在线更新,提示以下错误: & ...

  10. MySQL学习1---增删改查

    1.基本概念 数据表:由行和列组成的二维表: 数据表中的行通常叫做记录或者元组: 数据表中的列通常叫做字段后者属性: 主键:数据表中的每个记录都必须是唯一的,而不允许出现完全相同的记录. 键:即关键字 ...