uniyt中需要掌握的C#知识点之属性

来源:互联网 发布:99家居软件 编辑:程序博客网 时间:2024/06/04 17:57
    在进入unity学校之前,还必须掌握C#语言的基本语法与C/C++的不同之处,下面是C#的属性或者成为访问器的相关知识点:    在MSDN是这样解释到的:属性是这样的成员:它提供灵活的机制来读取、编写或计算某个私有字段的值。 可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法。 这使得可以轻松访问数据,此外还有助于提高方法的安全性和灵活性。    属性本身类似于变量,在内部又封装了变量(被封装的变量成为域),可以通过这样的封装更好的控制域被访问的过程,在刚开始接触到属性时,或许大家都和我一样觉得这个有点多余,因为我可以直接将变量设置访问属性,这样也可以控制访问过程啊!但当我们实际应用就会体会到,属性它有这样的优点:    1:将读写权限分开:如果不使用属性,仅使用public, protected, private,这几个限制都是读,写属性一起的,可读就可写,不可读同时也不可写,不能实现只读不可写,只写不可读的需求。    2:更好的安全性:可以在set中通过条件判断来限制非法值等,这虽然可以通过函数来实现,但不如属性的调用简洁方便。    3:给属性赋值或取值时,可以对变量进行运算后得到,这是根据你定制的规则得出的,他人无法改变,属性内还可以调用其他函数。    下面是一个简单的属性实现:
public class Player{private int explerience;public int Explerience{get{return explerience;}set{explerience=value;//value 是关键字 代表给访问器所赋的值}}}
通过属性,我们可以对一个private的变量,进行读写操作,或者你可以只写get让其只读(此时对其赋值操作将会报错,只能作为右值参与运算),也可以只写set让其只写(这样只能作为左值参与运算),这样非常灵活,还可以在内部添加其他代码,让值进行逻辑运算处理后得到你想要的结果再返回给外部,比如上面是一个对角色经验控制的属性,下面再添加一个角色等级的属性,并且是经过简单逻辑处理
        public int Level{get{return explerience/1000;}set{explerience=value*1000;}}
人物需要1000经验升一级,同过explerience/1000就得到人物等级并返回,同时对人物等级进行改变的时候,通过
explerience=value*1000计算出经验,并对经验进行保存。
同时属性还有自动实现,实现方式为
public int ID{get;set;}
这样跟域一样的使用,但是你可以通过增加,移除get set控制读写属性。
0 0