lunch.Hour = 12;//错误,lunch没有初始化
上面说那么多其实就一句话,我感觉初学者 没必要那么深入研究属性和字段。
------------------------------------------------------------------------------------------------------
| 属性就是对字段的封装 ,使用get和set访问器来控制如何设置或返回字段值|
------------------------------------------------------------------------------------------------------作者: 黑马-吕老师 时间: 2013-10-21 10:45
得到正确答案后,请把帖子设置为已解决,版主才会给你加分作者: 黑马-吕老师 时间: 2013-10-21 10:46
得到正确答案后,请把帖子设置为已解决,版主才会给你加分作者: 迷你卡卡 时间: 2013-10-22 15:06
将字段封装为属性,其实就是面向对象中封装这个特点的一个具体应用
因为我们在定义字段的时候,一般都会定义为私有的,private int _age;
但是要在类的外部是访问不到类中私有成员的,因此,通常就利用属性将字段封装起来
public int Age
{
get{return this.Age;}
set{this.Age=value;}
}
,这样在累的外部就可以通过属性访问到了,
顺便说下,字段和属性在定义时的一些注意点:
字段的访问修饰符一般都定义为私有的,并且字段的名称一般都会使用下划线开头,尽量都使用小写 例如 private string _name;
而在定义属性的时候,一般访问修饰符都使用public,并且尽量属性名首字母都使用大写,例如 public string Name{get;set}
这种写法也称之为自动属性,当写完字段后,按下快捷键Ctrl+R+E就会自动弹出,会有一个预览
希望能帮助你理解字段和属性作者: 有你珍贵 时间: 2013-10-22 16:29
字段是用来存储数据的。属性是用来保护字段不被外来的随意修改。。。作者: 追溯客 时间: 2013-10-23 09:16
如问题被解决,请及时把分类设为"已解决",黑马有你更精彩! 作者: 马晓平 时间: 2013-10-28 21:44
字段、方法和属性的概念区别:
类的字段准确地说应该是类的数据成员,其定义是:用于存储类和类的实例相关数据的变量。
方法就是类的函数成员,是一个为实现类的某一个特定功能的函数。因此也称为类的方法。
属性是一个代表类的实例或类中的一个数据项的函数成员。从定义可以看出,属性是类的一个函数成员或者说是方法。对类的属性的设定和获取可以用两个访问器set和get来实现。
字段,方法和属性的定义的区别如下示例:
class MyClass
{
//数据成员或者字段的定义
public int iTemp = 10;
private int iTestValue;
//属性的定义
public int MyValue
{
set //设定属性
{
iTestValue= value;
}
get //从属性获取值
{
return iTestValue;
}
}
//方法的定义
public void SetValue(ref int iValue)
{
TheRealValue = iValue;
}
public int GetValue()
{
return TheRealValue;
}
}
从概念上可以区分字段和属性的区别,字段是一个用于存储数据的变量,属性是一个方法或者说是一个函数成员。
那么既然属性是一个方法,那么他和方法的区别是什么呢?
从定义就可以看出来,属性其实本身就是方法。但既然把属性和方法定义成为两个概念,那么他们之间肯定有不同地地方。个人感觉,他们最大的区别首先是属性没有参数列表,而方法必须要有参数列表,哪怕没有参数,也要放一个空括号在那。其次,属性定义里要有set和get两个访问器,用于获得属性的值和设定属性的值。其余的地方没有发现不同之处,属性里也可以判定数据的合法性,和方法没有什么两样。作者: 追溯客 时间: 2013-10-29 07:43
问题解决请将分类设为"已解决".黑马有你更精彩作者: 李洋 时间: 2013-10-29 08:50
1。字段,方法,属性都可以叫做类的成员Member, 它们都需要定义访问级别;
2。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的;
3。属性看似字段,不是字段,可以进行非法值控制,可以设置只读。作者: 凌晨丶草未眠 时间: 2013-10-29 11:24
属性:定义成public,其他类也可调用
字段:一般定义成private,本类中使用
class Person
{
private int age;//字段
public int Age//属性,ctrl+r+e
{
get { return age; }//读
set {
//数据过滤
if (value<0)
{
new Exception("年龄不能为负数!");
}
else if (value>130)
{
new Exception("年龄不正常!");
}
else
{
age = value;
}
}//写
}