句柄
C#摒弃了指针,改为引用类型来表达,我们可以将这个引用看作指向实际内存地址的句柄。理解了这一点,C#有关引用类型的种种行为我们就清楚了。看下面这个程序:
using System;
class Element
{
public int Number=10;
}
class Test
{
static void Change(Element s)
{
s.Number=100;
}
static void Main()
{
Element e=new Element();
Console.WriteLine(e.Number);
Change(e);
Console.WriteLine(e.Number);
}
}
程序经编译后执行输出:
10
100
我们看到即使传值方式仍然改变了类型为Element类的对象t。
C#摒弃了指针,改为引用类型来表达,我们可以将这个引用看作指向实际内存地址的句柄。理解了这一点,C#有关引用类型的种种行为我们就清楚了。看下面这个程序:
using System;
class Element
{
public int Number=10;
}
class Test
{
static void Change(Element s)
{
s.Number=100;
}
static void Main()
{
Element e=new Element();
Console.WriteLine(e.Number);
Change(e);
Console.WriteLine(e.Number);
}
}
程序经编译后执行输出:
10
100
我们看到即使传值方式仍然改变了类型为Element类的对象t。
本文通过一个简单示例解释了C#中引用类型的工作原理,展示了如何通过引用修改对象的状态,即使在使用传值方式进行方法调用时也是如此。
1344

被折叠的 条评论
为什么被折叠?



