关于C#中的属性问题

我是C#新手,第一本书是java。类中有方法与属性,我的理解就是属性就是成员变量。可今天学的访问器get只读,set只写,还有什么字段。什么属性的。我理解get和set但... 我是C#新手,第一本书是java。类中有方法与属性,我的理解就是属性就是成员变量。可今天学的访问器get只读,set只写,还有什么字段。什么属性的。我理解get和set但不是完全理解,课程的题目是《用属性实现字段封装》他说的属性是什么属性,什么是字段。还有安全性到底体现在哪里?难道就是个私有的修饰符?private?限制访问?又或者限制调处修改?
我理解了一下
private string bnm;<- 字段
public string shuxing{<- bnm字段的属性
set{} <-只写 访问器
get{}<-只读 访问器
通常的情况 在类中私有的叫做字段,而共有的叫类的属性 对吗?

}
展开
 我来答
zhuxinjun1982
2012-05-25 · 知道合伙人互联网行家
zhuxinjun1982
知道合伙人互联网行家
采纳数:2145 获赞数:8328
毕业于上海行健职业学院,大专学历;2007~2009在北大青鸟进修网络编程课目。现任网络主管,平时爱好上网。

向TA提问 私信TA
展开全部
private string **<-属性(成员变量)?
public string yi
这里这个string yi就是属性
而GET和SET是定义该属性的性质,GET只读,SET只写,如果只定义GET那么该属性不可修改,只可读取。说白了定义GET属性后,只能将自身赋值给其它变量。而其它变量赋值给该属性是不允许的,因为是只读,只读的属性同样在安全性上是较高的,因为不可修改。

一般每个属性都分PRIVATE和PUBLIC,而对外公开的就是PUBLIC那个属性,此属性中定义了PRIVATE的GET,SET访问器。那么PRIVATE就已经被封装了,外部是无法对PRIVATE这个属性进行操作的,而只能对PUBLIC这个属性进行操作。只有内部类也就是本身才可操作该属性。一般在内部操作该属性都是判断值得范围,来进行下一步操作。这样是非常安全的,因为只有本身可以进行判断。

如果只定义SET,也就是只写属性,那是无意义的。

字段就是属性你可以这样理解没错,每一个对象都有自己的字段也就是属性。

private是限制外部访问,自身是可以调用的。

private你可以看作是权限,当定义了,就说明只有自身(本身的类内部的成员有权限访问)有权限,什么时候用private是看你设计需求来定的。如果你觉得这个方法或属性不想被随意访问,就可以使用。
备注:我语言表达不是很好,希望你能理解。如果还不理解,你可以网上找找相关案例,做个简单测试,或许就会明白了。
更多追问追答
追问
我的问题补充写的对吗?
追答
通常的情况 在类中私有的叫做字段,而共有的叫属性  对吗?

所有的和共用的只是属性的特征,不影响属性的本身。
private和public都是修饰符,来修饰属性的,从而告知系统该属性的权限或者特征是什么。
私有字段也是属性,只不过是私有属性,外部不可访问而已。
字段就是属性,和私有或公有无关的。
wo211898
2012-05-25 · TA获得超过495个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:142万
展开全部
private string bnm;<- 字段
public string shuxing{<- bnm字段的属性
set{} <-只写 访问器
get{}<-只读 访问器
}
我是这样理解的:
bnm 就是我们经常说的变量。而在C#里准确的描述是字段
shuxing通常会写成Bnm。也就是上面你声明的bnm!(Bnm即为bnm的属性)
属性声明时类型需要和属性表示的字段的类型相同(如Bnm需要声明为string);声明为public而且没有参数!(有参数的就是方法了)
属性的存在是为了对字段进行读写操作,因为为了保护数据的安全性。字段可以声明为private,因为private是限制外部访问,而有时候我们又需要在外部对bnm进行读写!
这个时候就给字段bnm声明属性Bnm,通过设置get和set访问器实现读写bnm的值!或者只提供set访问器使bnm的值只能够被读取!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-05-25 · TA获得超过114个赞
知道答主
回答量:97
采纳率:0%
帮助的人:49.5万
展开全部
类中有方法和属性。这里的属性是说 包含成员变量,字段的属性,还有其他一些成员。还有其他一些成员,这个属性是一个泛指的属性。
至于题目说的用属性实现字段封装。这里的属性是一个特指的属性,是类的成员一部分。
这样来理解。
private int num1;
private int num2
public int Sum
{
get { return num1+num2;}
set {num=value;}
}
这里的Sum就是一个类的属性,表示num1+num2.所谓安全性:就是只让你知道这个属性代表的是什么相加的和,而不让你知道是什么来相加。我这里只是一个很简单的例子,比如你可以在get里面写其他的一些复杂逻辑,用来返回一个对象,或者其他经过一些列复杂处理过程后的结果。
只是get。
再说set,用户可以通过给属性赋值,然后我们可以在这个属性的类里面获取到这个属性的值(你赋的值),针对这个值进行你想要的操作。
假设,我们定义一个属性,来控制显示权限数据。
我们有一个自定义的DropDownList 下拉列表ddlList,我们定义一个属性,名字为ShowWhat
1,2,3 表示显示不同层级的数据。比如 1,表示显示国家,2显示城市,3显示街道。
我们在类里面写好了这样的处理方法后,暴露给外面的只有
ShowWhat这个属性。别人通过ddlList.ShowWhat=1或者2或者3来达到他的需求就行了。而不需要别人知道这里面的逻辑。
private 只能给类的内部成员访问,哪怕是继承,也不能被调用。
像属性还可以定义只读的,那就是不给set,只给get。
这样用户就不能更改这个属性的值,没有办法针对这个属性做什么操作。
还有,你经常用的一个控件,比如 TextBox
我们调用TextBox.Visible =True;
其中Visible就是TextBox这个控件类的属性,你只需要赋值true或者false来控制它是否显示,而不能知道TextBox是怎样来实现显示与否的。
要是你还不清楚,我也没办法,这个概念的东西需要你加深时间理解,经验到了你就明白了

其中属性的get 方法,是获取值,给用户的。
set方法,是写入值,赋值给你这个属性的,然后通过事件回传给服务器,来进行相应的操作。
更多追问追答
追问
private string mnb;
public string bnm{
set{
}
get{
return :}} bnm是访问器的名字吗?还是它只是一个能限制属性的属性。再有什么是字段啊
追答
你写的mnb就是字段。
我们称呼的字段就是变量,不过定义的类是用来映射数据库的列的,所以有时候也叫字段。
不过一般叫做变量
bnm是访问器的名字。它的作用是用来封装类里面的一些信息,变量啊什么的,把一些逻辑进行封装,然后暴露给别人调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式