c#中GET和SET的具体用法

本文解释了在.NET框架中使用属性而非直接操作私有变量的原因。通过属性的get和set方法不仅可以保护私有变量的安全性,还能在修改变量时执行额外的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:
public class Car
{private string color;
 public string Color
 {
   get
   {return color;
    }
   set
    {color=value;
    }
  }
}
我的理解是:通过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
   {
      if(this.viewstate["color"]!= null)
       {
       return this.viewstate["color"];
       }
       return "":
    }
   set
    {
      this.viewstate["color"];=value;
    }
  }
}

在asp.net中通常这么使用.如果用变量的话就不好使用了。而且get,set中可以写多个语句.如上的get.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值