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

    在进入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控制读写属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值