在此之前问一句:何为封装?
就是:隐藏对象内部数据(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外面实例化就没问题.

简单来说
public,公共的
private,私有的
protected,家庭共享的
本文作者:Leemoon
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!