前言:
堆和栈这两个词在我的印象里面很模糊,听说过但是却不知如何用,更不知道两者之间的联系。学习C#这门语言的时候有幸了解到了,特此分享给大家。
对比-值类型和引用类型 值类型 int、 double、 char、 bool、 decimal、 struct、 enum; 说明 值类型的值存储在内存的栈上,存储效率高于堆; 引用类型 string、数组、自定义类、接口、委托; 说明 把引用类型的值作为参数传递,传递引用; 扩展 ref可以把值类型传递变为引用类型;
解释:
记得网上更多的是关于图文说明值类型和引用类型的值是如何在堆和栈上面传递的;那么小编就另辟蹊径换另外一种方式---“即时窗口”和“断点调试”结合的使用
//一、值类型和引用类型在即时窗口输出
//二、内存中值类型 实参和形参的传递过程 和 ref的传递过程;
class Program
{
static void Main(string[] args)
{
int number = 10;
Test( ref number);
Console.WriteLine(number);
Console.ReadKey();
}
static void Test(ref int n)
{
n += 10;
}
}
//断点调试图片详解
//三、引用类型-类地址传递的过程
class Program
{
static void Main(string[] args)
{
Person zlPerson = new Person();
zlPerson.Name = "成都";
Person per = zlPerson;
per.Name = "小雷雷";
Console.WriteLine(zlPerson.Name);
Console.Write(per.Name);
}
}
class Person
{
public string Name { get; set; }
}
//断点调试图片详解
文章末尾处留一个小的悬念,大家用过反编译工具没??.Net reflector挺不错的,推荐大家实际操作下,在装箱和拆箱的举例中应用更为广泛;留一幅图片仅供大家欣赏,嘿嘿。 |
---|