当前位置:  开发笔记 > 编程语言 > 正文

"this"关键字可以与值类型一起使用吗?

如何解决《"this"关键字可以与值类型一起使用吗?》经验,为你挑选了1个好方法。

我在.NET Reflector中查看Int32.GetHashCode()的反汇编代码时注意到了这个有趣的"this"关键字:

public override int GetHashCode()
{
    return this;
}

我一直认为"this"仅用于引用类型而不是值类型.在上面的代码中,每次尝试获取int的哈希码时都会使用装箱吗?

从MSDN中"this"关键字的文档: - this关键字引用类的当前实例

问候



1> Jeff Yates..:

是的,this对值类型有效.它不会导致拳击.虽然它引用的值类型,它是不在同一静脉作为引用类型的引用的参考-它是一个编译/开发时间方便,而不是运行时间参考.

C#规范的第7.5.7节规定:

当这是在结构的实例的构造内的基本表达式使用时,它是分类为一个变量.变量的类型是发生用法的结构的实例类型(第10.3.1节),变量表示正在构造的结构.结构的实例构造函数的this变量的行为与struct类型的out参数完全相同 - 特别是,这意味着必须在实例构造函数的每个执行路径中明确赋值变量.

当在结构的实例方法或实例访问器中的primary-expression中使用它时,它被归类为变量.类型的变量是在其内发生的使用该结构的实例类型(§10.3.1).

如果方法或访问是不迭代器(§10.14)时,这个变量表示为其调用方法或访问的结构,和行为完全一样的结构类型的ref参数.

如果方法或访问是一个迭代中,这个变量表示被调用的量,方法或访问器的结构的一个副本,和行为完全一样的结构类型的值参数.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有