c#面向对象中的get和set的用法

   面向对象编程的一个规则是:使用户只需要指定对象能做什么,而不需要去指定或者了解对象是如何完成该的。 
属性是对象内部的数据,用户如果能够直接访问对象内部数据,显然就违反了上述规则。(这也有点类似Windows系统对内存的保护,可以通过API来操作,但不推荐直接访问内存,那样就可能把内存搞乱了。)
 通过get和set访问器来访问,就保持了这种规则,而且还提供了额外的功能,如对值进行检查,实现只读或只写属性等。
 总的来说就是可以通过set get 来对类的属性进行封装,面向对象的程序是不可以直接用类自己定义的属性的

刚刚学C#的时候,很多人都不明白属性的访问器有什么用呢,我上网见了不少的评论,拉下来给大家看看

一般面向对象编程语言都要求成员变量不能直接暴露给外部访问,如下:
public class A
{
    public int Age;   //这是不好的,待会有程序员可能把-1赋给Age
}
为了防止乱赋值,C#设计了一个属性机制,要求把成员变量设为私有,在通过属性来控制成员变量的读写,如下:
public class B
{
    private int age;  //私有成员变量
    public int Age    //age的属性
    {
        get{ return age; }  //读取器
        set{                //写入器
            if(value>0)
              age = value;   //value是准备写入的值
        }
    }
}
这样Age就像保安一样,挡在age的前面。访问age的时候需要通过Age许可,如下:
B b = new B();
b.Age = -1;  //这是不行的,-1被带入value,value<0,判断不成立
b.Age = 10;  //这是可行的 
如果还有不懂的话可以留言,我尽量教会你,下面是我一个简单是例子
//-------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
    public class Myclass
{
     private string id="";
     private string name="";
    public string ID
   {
            get
            {
              return id;
             }
            set
              {
                id =value;
             }
       }
      public string Name
       {
           get
            {
              return name;
             } 
            set  
              {
                name =value;
              }
        }
   }
    class Program
    {
        static void Main(string[] args)
        {
              Myclass clazz = new Myclass ();
                clazz.ID ="BH001";
                clazz.Name="MR01";
              Console.WriteLine(clazz.ID,clazz.Name);
              Console.ReadLine();
        }
      
    }
   
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值