.net里面对象不是引述呢?什么时候是引用什么时候不是
.net里面对象不是引用呢?什么时候是引用什么时候不是?
请问为什么不是15啊?
------解决思路----------------------
static void setage(person p)
{
p.age = 12;
p = new person();
p.age = 15;
}
红色的代码,把p指向了新的引用,赋值的是新实例的age属性
跟你传递进来的实例没有任何关系
------解决思路----------------------
。。。很多人没搞明白。 setage(person p) 这个到底传的是啥,在C#里面这个只是传的是外面P的一个副本,而不是P本身自己的
可以这么理解吧
static void Main(string[] args)
{
person p = new person(); 这里的P实列了
p.age = 13;
setage(p); 这把生成了同样的一个P的副本 专了进去,注意是副本不是指针 相当于另一个P ,P的副本都指向了同一个堆里的内存
Console.WriteLine(p.age);//p.age=12;
Console.Read();
}
static void setage(person p)
{
p.age = 12;
p = new person(); 然后这里的P的副本又给new 重新指向 一个内存。并不影响外面的原来的P
p.age = 15;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
person p = new person();
p.age = 13;
setage(p);
Console.WriteLine(p.age);//p.age=12;
Console.Read();
}
static void setage(person p)
{
p.age = 12;
p = new person();
p.age = 15;
}
class person { public int age;}
}
}
请问为什么不是15啊?
------解决思路----------------------
static void setage(person p)
{
p.age = 12;
p = new person();
p.age = 15;
}
红色的代码,把p指向了新的引用,赋值的是新实例的age属性
跟你传递进来的实例没有任何关系
------解决思路----------------------
。。。很多人没搞明白。 setage(person p) 这个到底传的是啥,在C#里面这个只是传的是外面P的一个副本,而不是P本身自己的
可以这么理解吧
static void Main(string[] args)
{
person p = new person(); 这里的P实列了
p.age = 13;
setage(p); 这把生成了同样的一个P的副本 专了进去,注意是副本不是指针 相当于另一个P ,P的副本都指向了同一个堆里的内存
Console.WriteLine(p.age);//p.age=12;
Console.Read();
}
static void setage(person p)
{
p.age = 12;
p = new person(); 然后这里的P的副本又给new 重新指向 一个内存。并不影响外面的原来的P
p.age = 15;
}