对于类里面的成员的值类型和引用类型的概念一直有点模糊,写个例子加深记忆
第一种
新建2个类
1 class Box 2 { 3 4 public Item Item { get; set; }//引用类型 5 public Box(Item item) => this.Item = item; 6 7 8 } 9 class Item 10 { 11 public string Name { get; set; } = "手机"; 12 }
测试
1 static void Main(string[] args) 2 { 3 var item = new Item(); 4 var box = new Box(item); 5 6 Console.WriteLine($"{box.Item.Name}"); 7 8 item.Name = "苹果";//更改item的名字 9 10 Console.WriteLine($"{box.Item.Name}"); 11 12 }
结果 发生改变
第二种
1 class Box 2 { 3 4 //public Item Item { get; set; }//引用类型 5 //public Box(Item item) => this.Item = item; 6 public string ItemName { get; set; }//字符串虽然是引用类型,但是引用的时候仍然是创建副本 7 public Box(string itemName) => this.ItemName = itemName; 8 9 10 } 11 class Item 12 { 13 public string Name { get; set; } = "手机"; 14 }
测试
1 static void Main(string[] args) 2 { 3 var item = new Item(); 4 var box = new Box(item.Name); 5 6 Console.WriteLine($"{box.ItemName}"); 7 8 item.Name = "苹果";//更改item的名字 9 10 Console.WriteLine($"{box.ItemName}"); 11 12 }
结果 没有变化
原文:https://www.cnblogs.com/AtTheMoment/p/14730947.html