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

目录

成员变量:
基本规则:
结构体和类的初始化对比
初始化和实例化的例子:
可以是任意变量类型:
访问修饰符:

成员变量:

在此之前问一句:何为封装?

就是:隐藏对象内部数据(private),通过属性或方法(public)控制外部访问,从而保护对象状态的正确性。

就是:隐藏对象内部数据(private),通过属性或方法(public)控制外部访问,从而保护对象状态的正确性。

相关信息

结构体,枚举,class一般都放在namespace下面.

基本规则:

基本规则:

1.要声明在类语句块中

2.用来描述对象的特征.

3.可以是任意变量类型

4.数量无限制

5.是否赋值根据需求来定.

结构体和类的初始化对比

一个小对比:

struct Person { public int Id; } class person { public int Id = 0; }

结构体不能直接对成员变量初始化,但class就可以.

而且在引用的时候class必须实例化,但结构体就不用:

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

初始化和实例化的例子:

Play p1 = new Play();//实例化,创建了一个对象. p1.index = 0;//初始化,也就是赋值 p1.Name = "Player1";//初始化. 实例化:创建对象(new) 初始化:设置对象的初始状态(赋值/构造函数) 但实例化,会自动进行“默认初始化” | 类型 | 默认值 | | ------ | ----- | | int | 0 | | float | 0f | | bool | false | | string | null | |引用类型 | null |

可以是任意变量类型:

enum E_Sex { man, womn } struct Position { } class Pet { } class Person { public string name;//字符串类型 E_Sex sex;//枚举类型 Person GirlFriend;//是个class,变量名字可以和class相同. Person[] Friends; Position pos;//结构体类型 Pet pet;//也是一个class类型. }

观察一下上面,发现class,可以在里面声明一个与类名相同的变量,比如Person GirlFriend;,

在结构体只有,构造函数名字能和结构体名字相同.

这就引出了一个问题,和类名相同的成员变量不能在class里对其实例化,但在外面可以.原因:

class Person { Person GirlFriend=new Person(); }

这样就会无限递归,导致堆里的内存溢出.但在class外面实例化就没问题.

访问修饰符:

image.png

简单来说

public,公共的

private,私有的

protected,家庭共享的

本文作者:Leemoon

本文链接:

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