• 拒绝“高冷”词汇!初学C#中实用的泛型!


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

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

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

     1 namespace TestCode
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)             
     6         {
     7             Say("我饿了!");
     8         }
     9 
    10         public static void Say(string spk)          
    11         {
    12             Console.WriteLine("我说:" + spk);
    13         }
    14     }
    15 }

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

     1 namespace TestCode
     2 {
     3     class Program
     4     {             
     5         static void Main(string[] args)            
     6         {
     7             Say("我饿了!");
     8             Say(123);
     9         }
    10 
    11         public static void Say(string spk)        
    12         {
    13             Console.WriteLine("我说:" + spk);
    14         }
    15 
    16         public static void Say(int spk)          
    17         {
    18             Console.WriteLine("我说:" + spk);
    19         }
    20     }
    21 }

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

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

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

    这样,我把代码改成:

     1 namespace TestCode
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             Say<string>("我饿了!");
     8             Say<int>(123);
     9         }
    10 
    11         public static void Say<T>(T spk)
    12         {
    13             Console.WriteLine("我说:" + spk);
    14         }       
    15     }
    16 }

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

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

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

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

  • 相关阅读:
    HDU 4460 Friend Chains 第37届ACM/ICPC杭州赛区题目 (bfs求最短路,求两两之间最短路的最大值)
    HDU 4445 Crazy Tank (简单物理题,枚举)
    HDU 4433 locker 第37届ACM/ICPC 天津赛区现场赛C题(DP)
    JQuery 3级级联,3级联动,3级连动
    C++异常处理
    C++ Template
    学会用core dump调试程序错误(转)
    C++命名规则
    vim实用配置(转)
    GDB多进程调试(转)
  • 原文地址:https://www.cnblogs.com/seanyan/p/8893727.html
Copyright © 2020-2023  润新知