zoukankan      html  css  js  c++  java
  • 泛型缓存原理

    泛型方法的根本目的就是一个方法代替多个方法,满足不同类型的需求
    例如,差不多的方法体需要传入不同参数
     public class GenericMenthod
        {
            public static void GetName(string name)
            {
                Console.WriteLine("" + name);
            }
            public static void Getid(int id)
            {
                Console.WriteLine("" + id);
            }
            public static void Get(object Datetime)
            {
                Console.WriteLine("" + Datetime);
            }
        }
    有人说为什么不用object来代替呢
    当然可以,但是object是引用类型,当传入值类型的参数,会执行装箱拆箱操作,损耗系统性能,没有约束程序不严谨。
     public static void Get<T>(T t)
            {
                Console.WriteLine("" + t);
            }
    延迟加载,在调用时才指定类型
    Console.WriteLine(typeof(List<>));
    泛型.NET Framework2.0 编译器升级-支持占位符 JIT升级-运行时将占位符替换
    第一次编译会带占位符,第二次编译会把占位符替换成真实类型
    JIT会为不同的类型产生不同的副本
    public class Generic<T>
        {
            private static string GenericCache = null;
            static Generic()
            {
                GenericCache = $"{typeof(T).FullName}";
            }
            public static string  GetData()
            {
                return GenericCache;
            }
        }
     
     static void Main(string[] args)
            {
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine("**********************");
                    Generic<int>.GetData();
                    Generic<string>.GetData();
                    Generic<DateTime>.GetData();
                    Generic<object>.GetData();
                }
                Console.ReadLine();
            }
    在循环第一次时,已经为每种类型生成了副本,当第二次循环时,直接使用之前的对象,返回GenericCache
  • 相关阅读:
    四则运算2实验及表格
    四则运算2初步构思
    2015.3.6的程序实践
    对《梦断代码》的阅读计划
    林锐——软件思想阅读笔记2
    二维数组最大子数组溢出问题
    循环数组求最大子数组
    电梯调度需求分析调研报告
    二维数组求最大子数组
    四则运算实现用户输入答案并统计正确数量
  • 原文地址:https://www.cnblogs.com/cg-ww/p/12760544.html
Copyright © 2011-2022 走看看