传值参数 -> 值类型
传值参数 -> 引用类型,并且新创建对象
这种状况很少见,一般情况都是传进来引用它的值,而不是连接到新对象去(基本只有面试题会考这个)。
注:当参数类型为 string 时,在方法内部修改参数的值,对应的是此处创建对象这种情况。 因为 string 是 immutable 的,所以在方法内部对 string 赋值实际是“创建新的 string 实例再赋值”,最终方法外部的 string 并不会改变。
GetHashCode()
Object.GetHashCode()
方法,用于获取当前对象的哈希代码,每个对象的 Hash Code 都不一样。
通过 Hash Code 来区分两个 Name 相同的 stu 对象
static void Main(string[] args)
{
Student s = new Student()
{
Name = "Tim"
};
SomeMethod(s);
Console.WriteLine("{0},{1}", s.GetHashCode(), s.Name);
}
static void SomeMethod(Student stu)
{
stu = new Student()
{
Name = "Tim"
};
Console.WriteLine("{0},{1}", stu.GetHashCode(), stu.Name);
}
}
class Student
{
public string Name
{
get;
set;
}
}