句柄
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。