您的位置:首页 > 移动开发 > Objective-C

object.ReferenceEquals 方法

2010-07-06 15:00 316 查看
为了了解
C#
编程语言中的引用,学习
object.ReferenceEquals
方法是非常有用的。当分配一个对象,会收到一个包含值在内存中位置的指向的引用,另外,对象数据保存在内存堆中。正如这篇文章所显示的,
object.ReferenceEquals
方法提供了判断两个对象是否在同一个内存空间。

使用

object.ReferenceEquals

首先,在这个示例中,通过调用两个
StringBuilder()
构造方法时,在托管堆上分配两个
StringBuilder
对象;标识符
builder1

builder2
是保存在这个堆位置上的值的指针;也就是引用。第一次调用
object.ReferenceEquals
方法返回
false
,是因为这两个内存地址是不同的。第二次调用
object.ReferenceEquals
方法返回
ture
,是因为使用赋值运算这两个引用设置为相同。在
C#
语言中执行赋值运算按位赋值值;这使得引用相等。



***

使用
object.ReferenceEquals

程序

[C#] ***


using System;

using System.Text;

class Program{

static void
Main(){

//

测试

object.ReferenceEquals


StringBuilder
builder1 = new StringBuilder();

StringBuilder
builder2 = new StringBuilder();

Console.WriteLine(object.ReferenceEquals
(builder1, builder2));

builder1 =
builder2;

Console.WriteLine(object.ReferenceEquals
(builder1,
builder2));

//

在字符串常量上测试
object.ReferenceEquals


string
literal1 = "a";

string
literal2 = "a";

Console.WriteLine(object.ReferenceEquals
(literal1,
literal2));

literal1 =
literal2;

Console.WriteLine(object.ReferenceEquals
(literal1,
literal2));

}

}

运行结果


False

True

True

True

字符串常量引用。关于程序的第二部分字符串常量是如何比较的?在
C#
语言编译部分,例如“
a
”字符串常量是共用的,所有特点值的引用是相等的。因此,
literal1

literal2
这个两个的引用是相同的;它们执行同一块内存空间。

结束语


C#
语言中引用是指在内存中的位置,通过编辑引用可以确定两个变量在内存中是否是同一位置。虽然
object.ReferenceEquals
方法并不常用,它有助于揭示关于内存分配和指示数据的实际执行环境的行为。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: