`
ravenex
  • 浏览: 11330 次
  • 性别: Icon_minigender_1
  • 来自: 体育仓库
社区版块
存档分类
最新评论

.NET类型的全限定名称不表现variance

    博客分类:
  • .NET
阅读更多
链接:装配脑袋:手工解析.NET完全限定类型名称

想起CLR 2.0开始支持variance,在MSIL里声明泛型接口或者委托时可以在泛型参数前加上+或者-来表示covariance和contravariance。全限定名称里包含了泛型参数的信息,感觉也应该包含variance信息。

实验如下:
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
  .ver 2:0:0:0
}
.assembly variance
{
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module variance.exe

.class interface public abstract auto ansi IFoo`1<+T>
{
}

.class public auto ansi beforefieldinit Foo`1<T>
       extends [mscorlib]System.Object
       implements class IFoo`1<!T>
{
  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed
  {
    .maxstack  8
    IL_0000:  ldarg.0
    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
    IL_0006:  ret
  }
}

.class private abstract auto ansi sealed beforefieldinit Program
       extends [mscorlib]System.Object
{
  .method private hidebysig static void  Main(string[] args) cil managed
  {
    .entrypoint
    .maxstack  2
    .locals init (class Foo`1<int32> V_0,
             class [mscorlib]System.Type[] V_1,
             class [mscorlib]System.Type V_2,
             class [mscorlib]System.Type[] V_3,
             int32 V_4,
             bool V_5)
    IL_0000:  nop
    IL_0001:  ldtoken    IFoo`1
    IL_0006:  call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
    IL_000b:  call       void [mscorlib]System.Console::WriteLine(object)
    IL_0010:  nop
    IL_0011:  newobj     instance void class Foo`1<int32>::.ctor()
    IL_0016:  stloc.0
    IL_0017:  ldloc.0
    IL_0018:  call       void [mscorlib]System.Console::WriteLine(object)
    IL_001d:  nop
    IL_001e:  ldloc.0
    IL_001f:  callvirt   instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()
    IL_0024:  callvirt   instance class [mscorlib]System.Type[] [mscorlib]System.Type::GetInterfaces()
    IL_0029:  stloc.1
    IL_002a:  nop
    IL_002b:  ldloc.1
    IL_002c:  stloc.3
    IL_002d:  ldc.i4.0
    IL_002e:  stloc.s    V_4
    IL_0030:  br.s       IL_0046

    IL_0032:  ldloc.3
    IL_0033:  ldloc.s    V_4
    IL_0035:  ldelem.ref
    IL_0036:  stloc.2
    IL_0037:  nop
    IL_0038:  ldloc.2
    IL_0039:  call       void [mscorlib]System.Console::WriteLine(object)
    IL_003e:  nop
    IL_003f:  nop
    IL_0040:  ldloc.s    V_4
    IL_0042:  ldc.i4.1
    IL_0043:  add
    IL_0044:  stloc.s    V_4
    IL_0046:  ldloc.s    V_4
    IL_0048:  ldloc.3
    IL_0049:  ldlen
    IL_004a:  conv.i4
    IL_004b:  clt
    IL_004d:  stloc.s    V_5
    IL_004f:  ldloc.s    V_5
    IL_0051:  brtrue.s   IL_0032

    IL_0053:  ret
  }

}

结果:
IFoo`1[T]
Foo`1[System.Int32]
IFoo`1[System.Int32]

IFoo<>也没有显示出定义时的加号。看来variance对识别类型不重要,所以不必包括在名字里。
分享到:
评论

相关推荐

    bias-variance.pdf

    而欠拟合则是模型无法有效地捕捉训练数据中的模式,导致在训练集和测试集上的表现都不理想。这两者都与模型的复杂度、训练数据量以及噪声有关。 Bias(偏差)反映了模型的固有误差,即模型对训练数据的平均预测值与...

    Professional C# 4 and .NET 4

    the book also covers traditional Windows programming, Windows Forms, GDI+, and ASP.NET Web programming with C# Addresses additional topics such as: base class libraries, communication with enterprise...

    机器学习 - Bias and Variance

    如果一个模型具有高偏差,那么它可能在训练数据上就表现出较差的拟合性能,进而导致它在测试数据上的表现也很不理想。简单来说,高偏差意味着模型过于简化,无法捕捉数据的真实规律,最终导致欠拟合(Underfitting)...

    Variance Swaps primer

    ### 变异率互换(Variance Swap)基础解析 #### 概述 变异率互换(Variance Swap)是一种金融衍生工具,它为投资者提供了一种直接且简单的方式来暴露于标的资产波动性的风险敞口。该工具在欧洲股票衍生品市场中被...

    variance shadow map

    Variance Shadow Maps (VSM) 是一种在图形学中用于实现软阴影的技术,它在OpenGL 3.3及以上版本中得到了广泛的应用。相比传统的Shadow Mapping技术,VSM提供了更好的视觉效果,尤其是在处理边缘模糊和避免闪烁问题上...

    Bias-variance decomposition推导

    高方差意味着模型对训练数据过于敏感,容易受到噪声的影响,从而在新数据上表现不佳。 3. **均方误差**(Mean Squared Error, MSE):用于评估模型预测值与真实值之间差异的一种常见指标。MSE 是偏差平方与方差之和...

    SuperMap Objects .NET 栅格统计

    在IT行业中,SuperMap Objects .NET 是一款强大的GIS(地理信息系统)开发库,它为开发者提供了丰富的GIS功能,包括对栅格数据集的操作和分析。本文将深入探讨如何利用SuperMap Objects .NET 进行栅格统计,以及如何...

    Variance Shadow Maps

    ### 变异阴影贴图(Variance Shadow Maps) #### 概述 变异阴影贴图(Variance Shadow Maps, VSM)是一种新型实时阴影算法,旨在解决传统阴影贴图中存在的严重锯齿问题。在实时图形学中,阴影贴图是一种广泛使用的...

    allan_variance.zip_ALLAN VARIANCE_IMU

    在标题为"allan_variance.zip_ALLAN VARIANCE_IMU"的压缩包中,包含了一个名为"allan_variance.cpp"的源代码文件,该文件是用ISO C++98标准编写的,用于生成Allan方差的图形表示,以分析IMU数据的质量和稳定性。...

    allan variance

    阿仑方差(Allan Variance,简称AV)是一种在时间序列分析中广泛使用的统计方法,特别是在精密时频测量和卫星导航系统中用于评估时钟稳定性。它由美国工程师Douglas Allan于1966年提出,主要用于评估钟的短期和长期...

    Variance reduction techniques and quasi-Monte Carlo methods ☆

    变异减少技术(Variance Reduction Techniques)和准蒙特卡罗方法(Quasi-Monte Carlo Methods, QMC)是解决高维积分问题的有效工具。在统计学、物理学、经济学及金融等领域中,许多复杂的高维积分无法通过解析方法...

    Estimation of Variance and Its Properties in Measurement Error Model

    在给定的标题中,“Estimation of Variance and Its Properties in Measurement Error Model”指出了文章的主题是围绕测量误差模型中方差估计及其性质展开的研究。这意味着文章不仅仅关注如何估计方差,还关注这种...

    hadamard variance

    哈达玛方差(Hadamard Variance)是一种在信号处理和数据分析中广泛使用的统计方法,尤其在时频分析和卫星钟性能评估中扮演着重要角色。哈达玛矩阵(Hadamard Matrix)是该方法的基础,它由一系列正交行或列组成的...

    Introduction to Variance Estimation - 2nd Edition - 2007

    标题《Introduction to Variance Estimation - 2nd Edition - 2007》所代表的是一本关于方差估计的入门级教科书,由Kirk M. Wolter所撰写。本书是第二版,于2007年出版,是统计学领域特别是抽样调查和数据分析方面的...

    dynamic mean variance asset allocation.pdf

    在《Dynamic mean-variance asset allocation》这篇由Suleyman Basak和Georgy Chabakauri合著的论文中,作者深入探讨了这一主题。 动态均值方差资产配置的核心在于,它允许投资者根据市场条件的变化调整其投资组合...

    Generic Variance java 源码

    Generic Variance java 源码

    java Array Variance 示例

    java Array Variance 方法

Global site tag (gtag.js) - Google Analytics