object.ReferenceEquals 方法
2010-07-06 15:00
316 查看
为了了解
C#
编程语言中的引用,学习
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
方法并不常用,它有助于揭示关于内存分配和指示数据的实际执行环境的行为。
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
方法并不常用,它有助于揭示关于内存分配和指示数据的实际执行环境的行为。
相关文章推荐
- Object.Equals和Object.ReferenceEquals方法详解
- .NET中Object.Equals()方法与Object.ReferenceEquals()方法
- object.Equals与object.ReferenceEquals方法
- Object.ReferenceEquals 方法
- Object 开发中常用的重写方法总结toString,equals,hashCode,compareTo
- Object 类中的 equals方法
- Object 类之 hashCode 和 equals 方法
- 重写对象的equals(Object)方法,同时重写Hashcode()方法
- Object对象之equals方法
- Effective Java Item8-在覆盖equals(Object类的nonfinal方法)时遵循接口规范
- Object 九大方法之equals理解
- java学习笔记——Object的equals方法
- (二十五)Java工具类EqualsBuilder协助Object.equals(object)方法详解
- (二十五)Java工具类EqualsBuilder协助Object.equals(object)方法详解
- (二十五)Java工具类EqualsBuilder协助Object.equals(object)方法详解
- 整理 Object 类(为什么重写 equals 和 hashCode 方法)
- Object 类中的 equals方法
- 关于Object中的equals方法重写需要注意什么
- Java--Object中的equals方法的几个要点
- Java Object类(equals方法)