10.1 值参数 - 图1

传值参数 -> 值类型

10.1 值参数 - 图2图片.png图片.png

传值参数 -> 引用类型,并且新创建对象

10.1 值参数 - 图5这种状况很少见,一般情况都是传进来引用它的值,而不是连接到新对象去(基本只有面试题会考这个)。

注:当参数类型为 string 时,在方法内部修改参数的值,对应的是此处创建对象这种情况。 因为 string 是 immutable 的,所以在方法内部对 string 赋值实际是“创建新的 string 实例再赋值”,最终方法外部的 string 并不会改变。

图片.png图片.png

GetHashCode()

Object.GetHashCode() 方法,用于获取当前对象的哈希代码,每个对象的 Hash Code 都不一样。

通过 Hash Code 来区分两个 Name 相同的 stu 对象

  1. static void Main(string[] args)
  2. {
  3. Student s = new Student()
  4. {
  5. Name = "Tim"
  6. };
  7. SomeMethod(s);
  8. Console.WriteLine("{0},{1}", s.GetHashCode(), s.Name);
  9. }
  10. static void SomeMethod(Student stu)
  11. {
  12. stu = new Student()
  13. {
  14. Name = "Tim"
  15. };
  16. Console.WriteLine("{0},{1}", stu.GetHashCode(), stu.Name);
  17. }
  18. }
  19. class Student
  20. {
  21. public string Name
  22. {
  23. get;
  24. set;
  25. }
  26. }

引用参数 -> 引用类型,不创建新对象只改变对象值

10.1 值参数 - 图8图片.png图片.png