- 首先我定义了一个类:
- sealed class UserModel
- {
- private string _UserName;
- private int _UserAge;
- public int UserAge
- {
- get { return _UserAge; }
- set { _UserAge = value; }
- }
- public string UserName
- {
- get { return _UserName; }
- set { _UserName = value; }
- }
- public UserModel(string name, Int32 age)
- {
- UserName = name;
- UserAge = age;
- }
- public void DisplayMember()
- {
- Console.WriteLine("UserName:{0},UserAge:{1}",this.UserName,this.UserAge);
- }
- public static void SendUserDateByValue(UserModel user)
- {
- user.UserAge = 34;
- user = new UserModel("周宇朝", 21);
- }
- }
- Main函数:
- UserModel Model = new UserModel("CSDN", 10);
- UserModel.SendUserDateByValue(Model);
- Model.DisplayMember();
- Console.ReadLine();
这里传入的是引用,在复制的过程中,复制了指向调用者的对象的引用。 这里传入的其实是一个引用,在复制的过程中,复制了指向调用者的对象的引用,在调用SendUserDataByValue()方法与调用者指向同一个对象,所以可以改变状态数据,但是在调用的方法体内,重新实例化,却是不行的。Andrew Troelsen的书中写道:If a reference type is passed by value, the callee may change the values of the object’s state data but not the object it is referencing. 如果按值传递引用类型,被调用者可能改变对象的状态数据的值,但不能够改变所引用的对象。