c# set与get

我的理解是:通过GET和SET对公有变量Color进行读写操作,实际就是间接更改color私有变量的值,那既然如此。为何不设color为public,让实例进接对color进行读写操作呢?
 

如果有一天,老板让你把这个类改成

当汽车的颜色改变时,同时计算一下汽车的《价格》属性

那么如果直接对Color操作,你不是死定了? 
 
“属性”是.net的特色之一。
其实就相当于方法,尤其是java中经常会用到get、set方法(.net的有些思想就是java的)。  
属性的真实作用不只是为了更改某个成员变量的值

比如form的size属性在set的同时要重画form,如果你不想让用户对color修改,就不要提供set方法 

是面向对象具有的
set and get
它的用途:  一般是对类里面的变量进行操作. 而不是直接对类的变量进行操作.
有一个很大的作用就是:  便于维护.

因为:
如果一个类的一个变量int a ,在其它包或命名空间类中使用了1000次,但是过了许久,你想把a改为b,
如果直接对变量a操作的话,就得需求修改整个程序的1000处.  如果用属性了,就不会了,只需改这个方法即可
public int A
{
 set
 {
   a = value;
 }
 get
 {
   return a;
 }
}
放为:
public int B
{
 set
 {
   b = value;
 }
 get
 {
   return b;
 }
}
除去这个属性之外的地方根本不需要改变 
通过上面的讲解。有一点点明白了。
是不是让满足一定条件让GET和SET来改变类中的私有变量。而不能让实例直接操作。像上面的代码保证了color属性的安全性。
既然如此可不可以写成
set
{color=value*20;  //value是不是相当于Color的值
}

 

我当初和你有一样的想法.但是现在改变了。
举个例子说明一下吧.

public class Car
{

 
public string Color
 {
   
get
   {
      
ifthis.viewstate["color"]!= null)
       {
       
return this.viewstate["color"];
       }
       
return "":
    }
   
set
    {
      
this.viewstate["color"];=value;
    }
  }
}


 

 

在asp.net中通常这么使用.如果用变量的话就不好使用了。而且get,set中可以写多个语句.如上的get.
不知道这样解释你满意吗?

posted @ 2008-08-25 17:19  kin2321  阅读(726)  评论(0编辑  收藏  举报