编辑
2026-06-07
编程语言
00
请注意,本文编写于 51 天前,最后修改于 25 天前,其中某些信息可能已经过时。

目录

三大特性之一:封装_类和对象
定义
类和对象比较:
实例化对象:
练习1:

三大特性之一:封装_类和对象

定义

相关信息

类(class)包裹的东西就是形容这一类对象的.

在namespace{}语句下声明.

类里面声明类:内部类

class是引用类型

相关信息

image.png

类和对象比较:

// 1. 定义类 —— 相当于画图纸 class Person { public string Name; // 数据:名字 public void SayHi() // 行为:打招呼 { Console.WriteLine("你好"); } } // 2. 创建对象 —— 根据图纸造出具体的房子 Person person1 = new Person(); // person1 就是一个对象 person1.Name = "张三"; // 给这个具体的对象设置名字 Person person2 = new Person(); // 可以造出第二个独立的对象 person2.Name = "李四";

实例化对象:

class Person { } Preson p1; Person p2=null; person ps=new Person()

p1和p2是一个意思,在栈上分配了一个引用(不能说分配内存空间,因为栈太小了只有1mb,堆才会分配空间),但没有地址.所以是空的.p3则是在堆分配了空间,所以栈也储存了地址(指针).

class 不new就不能引用属性,但struct就可以.

class Person { public int Age; } Person p; // 没有 new p.Age = 18; // ❌ 运行时错误:NullReferenceException

反观结构体

struct Person { // 空的,没有任何成员函数 } Person p = new Person(); // ✅ 正确 Person p2; // ✅ 也正确(不用 new)

练习1:

image.png

相关信息

这里p,p1,并非对象,而是存放指针(引用变量)的一个放在栈上的变量,里面内容,也就是引用(地址,指针)就指向对象,堆里储存的是 GameObject()才是对象.

所以上面的题,是把栈里指针A赋值给B,而不是从堆里把地址赋值给B.

本文作者:Leemoon

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!