您的位置:程序门 -> .net技术 -> c#



请问一个属性的问题?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请问一个属性的问题?[已结贴,结贴人:kook_tian]
发表于:2007-01-15 13:23:57 楼主
我在一个类中可以定义一个全程变量作为这个类的属性,可即使这个属性无需任何执行的程序体,我发现大家还是要把它写成get,set。那么他和你只定义一个全程变量有什么区别呢?
发表于:2007-01-15 13:26:431楼 得分:5
个人感觉只是为了按照面向对象的方式处理问题!
发表于:2007-01-15 13:30:592楼 得分:5
你可以自己定义读写啊
可以只读,只写,读写
发表于:2007-01-15 13:38:323楼 得分:5
如果只把一个变量公开,那么这个变量的赋值基本是控制不到的,可是如果用属性来实现的话,可以在set方法里对这种操作进行控制,比如可以把变量的值规定在一个范围内等等.
发表于:2007-01-15 13:39:174楼 得分:5
如果是可以读写,应该没有什么区别。
发表于:2007-01-15 13:41:375楼 得分:5
private   string   a= " "
public   string   a
{
    get   {   retunr   a;}
    set   {   a   =   value;   }
}
在类中,   这样定义一个属性和把变量声明为pulic   你认为那一个好点?
发表于:2007-01-15 13:43:186楼 得分:5
不明白楼主要表达什么意思~
发表于:2007-01-15 13:46:107楼 得分:10
比如对于一个student类.

no.1
public   class   student
{
        public   string   sno;
        ...
}

no.2
public   class   student
{
          private   string   sno;
          public   string   sno
          {
                  get{return   sno;}
                  set{sno=value;}
            }
}

楼主是不是想问为什么用no.2,而不用no1?

简单来说,就是可以防止类的私有成员暴露给外界,安全,另外也更灵活,可以很方便的控制字段的读写..

msdn说明如下:
属性提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。
发表于:2007-01-16 16:46:248楼 得分:0
re:liujia_0421(snowlover)
是这个意思,要说灵活性它是有的,我们可以在get,set中添加程序体。

但你说:“简单来说,就是可以防止类的私有成员暴露给外界,安全,另外也更灵活,可以很方便的控制字段的读写..”我不是完全赞同,设置sno值和设置sno不是一样吗?如上你的两个方法调用该类时他们的可见度不也是一致的吗?那是不是能说明当我们对这个属性不需要更多设置的时候只写成一个全程变量就可以了呢?
no.1
public   class   student
{
        public   string   sno;
        ...
}

no.2
public   class   student
{
          private   string   sno;
          public   string   sno
          {
                  get{return   sno;}
                  set{sno=value;}
            }
}
他们是不是就没有区别了?
要提到安全性我区分不出来他们在安全性上有什么区别!
发表于:2007-01-16 16:50:039楼 得分:5
习惯而已     只负责接分
发表于:2007-01-16 16:58:2910楼 得分:0
to:要提到安全性我区分不出来他们在安全性上有什么区别!

可能我的表述不太确切..

我说的安全性,主要说不会把私有成员暴露给外界,即访问该对象时,你不会知道对象有个私有成员是sno..可能也不能说这样就提高了安全性..我没有特别强调安全,而是强调这样不会把对象的私有成员暴露出去...

表达能力有限,仅供参考..
发表于:2007-01-16 17:06:1611楼 得分:5
http://blog.csdn.net/knight94/archive/2006/06/04/772886.aspx


快速检索

最新资讯
热门点击