初学C#,整天对着业务逻辑,写反反复复的“过程型”代码逻辑十分枯燥,不如用点新东西提升一下代码效率,让代码看起来更有逼格?!

好,下面我们看看C#中简单易学的泛型。

首先,我写了一个这样的方法 ---- Say(string spk),并在主函数中进行调用:

 namespace TestCode
{
class Program
{
static void Main(string[] args)
{
Say("我饿了!");
} public static void Say(string spk)
{
Console.WriteLine("我说:" + spk);
}
}
}

如果,我说:123,则需要另一个方法 ---- Say(int spk),并在主函数中进行调用:

 namespace TestCode
{
class Program
{
static void Main(string[] args)
{
Say("我饿了!");
Say();
} public static void Say(string spk)
{
Console.WriteLine("我说:" + spk);
} public static void Say(int spk)
{
Console.WriteLine("我说:" + spk);
}
}
}

这样便完成了我的需求。你会发现,两个方法除了“形参”数据类型不同外,其他都一个样,这就是方法的“重载”。

好了,回归正题。爱动脑子的你,到这里,肯定会想:不就是数据类型不同嘛,干嘛写两遍基本一模一样的方法呢?真TM费事,怎么合成一个呢?

好在,微软已经帮你先前一步实现了你这个需求,这就是“泛型”(Generices),我自己理解就是:“涵盖了广泛(所有)的数据类型”。

这样,我把代码改成:

 namespace TestCode
{
class Program
{
static void Main(string[] args)
{
Say<string>("我饿了!");
Say<int>();
} public static void Say<T>(T spk)
{
Console.WriteLine("我说:" + spk);
}
}
}

完成,这就是“泛型”,基本格式就这样,比对着看一下,聪明的你很快就能看懂了,思想就是:可以接受任何数据类型的“实参”,我调用方法时再告诉计算机 -----“我要表达的内容,其数据类型是什么”。

若有返回类型,那把void改为T。用T作为数据类型去定义变量。

当你熟悉了泛型的基本用法,你就可以去尝试更多的地方去使用泛型!

初写博客,会有许许多多瑕疵,希望广大园友能够为我指出,不吝赐教!我喜欢的表达的风格是极为通俗,形象且顺应思路走向,用最简单、直白的方式解决“看似”最复杂的问题。

拒绝“高冷”词汇!初学C#中实用的泛型!的更多相关文章

  1. 拒绝“高冷”词汇!初学C#中的委托

    有一天,你写了好多好多带“形参”的构造函数(就是“方法”,同义),而且需要向这些构造函数里传递同样的“实参”,然后你就憨憨地一个一个函数的调用并赋予同样的“实参”,这一天就这么过去了... 又过了几天 ...

  2. 转发:maven打包时始终出现以下提示:-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)

    maven打包时始终出现以下提示: 1.-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)List<User> userList= new Array ...

  3. -source 1.5 中不支持泛型(请使用-source5或更高版本)

    Idea中maven--compile时报错     -source 1.5 中不支持泛型(请使用-source5或更高版本) 解决办法 在项目的pom.xml中,添加 <build> & ...

  4. 【翻译自mos文章】11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值

    [翻译自mos文章]11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值 来源于: Default and Minimum ME ...

  5. 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径

    转自原文 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径. 打开C:\Windows\System32\inetsrv\config路径 找到applicationH ...

  6. maven source 1.3 中不支持泛型 解决办法

    maven打包时始终出现以下提示:1.-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)List<User> userList= new ArrayL ...

  7. 【转载】 C#中常见的泛型集合类有哪些

    在C#语言编程过程中,List集合类是最常见的泛型集合类,其实除了List集合,还有其他一些常用的泛型集合类,如字典类型Dictionary泛型集合类.先进先出的队列类型Queue泛型集合类.后进先出 ...

  8. html5之canvas困惑 在canvas标签内需要设置了宽跟高,如果在css中设置同样的宽跟高,画出来的图像变形了?

    <canvas class="cvs"></canvas> 遇到的问题: 如css 中设.cvs{width:500px;height:400px;},也就 ...

  9. Nginx多进程高并发、低时延、高可靠机制缓存代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

随机推荐

  1. JS中如何处理多个ajax并发请求?

    js中的多并发处理. 通常 为了减少页面加载时间,先把核心内容显示处理,页面加载完成后再发送ajax请求获取其他数据 这时就可能产生多个ajax请求,为了用户体验,最好是发送并行请求,这就产生了并发问 ...

  2. LuoguP1226 【模板】快速幂||取余运算

    题目链接:https://www.luogu.org/problemnew/show/P1226 第一次学快速幂,将别人对快速幂原理的解释简要概括一下: 计算a^b时,直接乘的话计算次数为b,而快速幂 ...

  3. form表单的默认提交行为

    一 如果<form></form>表单中只有一个<input type="text"/>,则使文本框获取焦点,并单击回车,form会自动提交. ...

  4. oracle pl/sql程序

    简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...

  5. Spring框架的事务管理的分类

    1. Spring的事务管理的分类 1. Spring的编程式事务管理(不推荐使用) * 通过手动编写代码的方式完成事务的管理(不推荐) 2. Spring的声明式事务管理(底层采用AOP的技术) * ...

  6. 怎么用js设置a标签点击链接改变当前颜色

    怎么用js设置a标签点击链接改变当前颜色 20 例如:多个a标签为白色,当点击其中一个a标签时改变那一个a标签的字体颜色为黄色,并且跳转到对应链接,当点击下一个a标签链接时,下一个为黄色,之前一个恢复 ...

  7. 在winform嵌入外部应用程序

    应朋友要求,需要将一个第三方应用程序嵌入到本程序WinForm窗口,以前在VB6时代做过类似的功能,其原理就是利用Windows API中FindWindow函数找到第三方应用程序句柄,再利用SetP ...

  8. POJ 2585.Window Pains 拓扑排序

    Window Pains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1888   Accepted: 944 Descr ...

  9. html 5 如何限制上传的文件类型 (uploadifive)

    可以直接设置input标签的accept属性来限制上传文件的类型 <input type="file" accept="application/msword&quo ...

  10. 通过程序修改注册表键值来达到修改IE配置参数的目的

    通过程序修改注册表键值来达到修改IE配置参数的目的 使用IE访问应用程序或网页时经常需要设置一些选项(工具-Internet 选项),比如为了避免缓存网页,把工具-Internet选项-常规选项卡-I ...