简单分析.net泛型中的类型参数

本文探讨了.NET泛型中类型参数的处理方式,通过分析反汇编代码,揭示了CLR如何处理泛型参数。文章以C类为例,详细解释了Test_Class和Test_Method方法中的泛型类型使用,并展示了对应汇编代码,阐述了泛型类与泛型方法在存储和使用泛型参数时的不同之处。" 110320204,9399872,深度学习:从DNN到正则化和Dropout,"['深度学习', '神经网络', '正则化', '优化算法', '机器学习']
摘要由CSDN通过智能技术生成

     一位朋友询问tppeof、GetType()、is、as的问题,在实验的时候顺手就用泛型写的例子。在看Jit后的反汇编时发现了一个问题,clr对泛型参数有些特殊处理。上网查了一下没有找到介绍泛型参数存储的文章因此动手做了一番实验,有了些浅显的理解在此记录下来望看到此文的高手能给予全面的解释。

    以前用泛型的时候没想过clr是如何处理泛型参数的,今天查阅了下<<Expert .NET 2.0 IL Assembler>>里面讲解了一个叫做GenericParam Metadata Table的数据结构,不过没能解决我的疑惑。先来看段代码:

class C<T, U, V> where T: class
    {
        public void Test_Class(V v)
        {
            Debugger.Break();
            T t = v as T;
        }
        public void Test_Method<X, Y>(X x, Y y)
        {
            Debugger.Break();
            Type type1 = typeof(X);
            Type type2 = typeof(Y);
        }
    }
class Test

{

static void Main()

{  
C<Type, string, object> c = new C<Type, string, object>();           
            string s = "ok

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值