c#软件开发学习笔记

一、类和对象

类是同一类对象的抽象,对象是类的某一特定实体。
类就是具有相同属性和方法的集合
对象就是类的实例化

1. 创建对象并给属性赋值

// 创建对象: 类名 对象名 = new 类名()
Student zhangsan  = new Student();
//对象属性赋值方式一 对象.属性=值
zhangsan.Name = "张三";
zhangsan.Age = 10;
zhangsan.Sex = "男";
//访问对象属性 对象.属性=值
Console.WriteLine(zhangsan.Age);

//创建对象 对象赋值方式二
Student lisi = new Student() { Name="李四",Age = 20,Sex="女"};

二、内存结构

1.栈(Stack)

栈是一种后进先出(LIFO)的数据结构,用于存储局部变量和方法调用的上下文(如参数、返回地址等)。在C#中,当一个方法被调用时,其局部变量和参数会在栈上被分配空间。方法执行完成后,这些空间会被自动释放,这就是所谓的栈帧(Stack Frame)的弹出。栈的大小是有限的,且通常是自动管理的。

2.堆(Heap)

堆是一种用于动态内存分配的区域,它的大小可以动态变化,且不像栈那样受到严格的限制。在C#中,堆主要用于存储对象实例。当使用new关键字创建对象时,内存会在堆上分配,并返回该对象的一个引用(通常是一个指向该对象内存地址的指针)。堆上的内存需要显式或隐式地释放,但在C#中,这通常是通过垃圾回收机制自动完成的。

3.静态存储区

静态存储区用于存储类的静态成员和静态变量。这些成员的生命周期与程序的生命周期相同,即从程序开始执行到程序结束。静态存储区不是栈或堆的一部分,而是程序内存布局中的一个独立区域。

4.常量存储区

常量存储区用于存储常量值,这些值在编译时就已确定,并在程序的整个生命周期内保持不变。常量通常存储在程序的代码段中,但也可以被视为内存布局的一个组成部分。

更多推荐