对于类里面的成员的值类型和引用类型的概念一直有点模糊,写个例子加深记忆

第一种

新建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 Item10     {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         }

结果 发生改变

C# 类的成员的值类型和引用类型_C#

第二种

 

 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 Item12     {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         }

结果 没有变化

C# 类的成员的值类型和引用类型_C#_02