• 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.
    不知道这样解释你满意吗?

  • 相关阅读:
    java中的拷贝(二)深克隆
    java中的拷贝(一)
    java类的访问权限
    对象和对象引用
    equals和==
    类与继承(一)
    WebSocket简单介绍
    php获取请求的方式(get/post)
    php 使用jquery实现ajax
    PHP 系统常量及自定义常量
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/1275939.html
Copyright © 2020-2023  润新知