• 抽象自定义泛型小笔记


    public static class SomethingFactory<T> where T:MyObj

            这样在使用SomethingFactory的时候就只能传入MyObj类型或MyObj的派生类型啦

            注意:

              还可以写成这样

              where T:MyObj,new()

              来约束传入的类型必须有一个构造函数。  

    在实际开发中,我们也经常需要定义自己的泛型类型

            来看下面的代码:        

    复制代码
              public static class SomethingFactory<T>
              {
                  public static T InitInstance(T inObj)
                  {
                      if (false)//你的判断条件
                      {
                          //do what you want...
                          return inObj;
                      }
                      return default(T);
                  }
              }
    复制代码

            这段代码的消费者如下:        

                  var a1 = SomethingFactory<int>.InitInstance(12);
                  Console.WriteLine(a1);
                  Console.ReadKey();

            输出的结果为0

    如果你想返回T类型的空值,那么请用default(T)这种形式

                因为你不知道T是值类型还是引用类型,所以别擅自用null

    注意:如果这里使用Hashtable、Queue或者Stack等非泛型的容器

            就会导致装箱操作,损耗性能。因为这些容器只能存储Object类型的数据

          <2>泛型类型

            List<T>、Dictionary<TKey, TValue>等泛型类型都是.net类库定义好并提供给我们使用的

     <1>做foreach循环时多考虑线程安全性      

            在foreach时不要试图对被遍历的集合进行remove和add等操作

            任何集合,即使被标记为线程安全的,在foreach的时候,增加项和移除项的操作都会导致异常

            (我在这里犯过错)

          <2>IEnumerable接口是LINQ特性的核心接口

            只有实现了IEnumerable接口的集合

            才能执行相关的LINQ操作,比如select,where等

            这些操作,我们接下来会讲到。

  • 相关阅读:
    一文摸透从输入URL到页面渲染的过程
    JavaScript实现哈希表
    JavaScript数据结构与算法博客目录
    JavaScript实现图结构
    从宏观到细节为你讲解前端性能优化
    详解HTTP协议
    JavaScript实现排序算法
    Google Stadia免费试用两个月
    安卓手机调成黑白屏幕
    UWP Xbox上隐藏键盘⌨
  • 原文地址:https://www.cnblogs.com/x-poior/p/5163100.html
Copyright © 2020-2023  润新知