C#中的get和set有什么用 声明属性

来源:互联网 发布:排球 知乎 编辑:程序博客网 时间:2024/04/20 05:51
我知道get set的作用
这是属性,get具有读取功能,set是写入功能,你可以看C#里的属性。
1.作用就是对字段进行封装,类似javabean的用途。没有也可以,但是破坏了OO的封装性。2.如果只有get和set其中之一的方法的话就实现了对字段的保护。只读或者只写。
get/set为获取或者设置类中的属性比如:private int _count;  定义私有变量public int Count     设置类中的变量(数据字段)属性{set{//value是属性中的关键字//代表你传入的值this._count=value;}get{return this._count;}}可以在属性中做验证或者通过属性对某个属性进行保护..........
这里在属性声明中要用到的:如:class ClassA{   private int _a;   public A(int a)   {      this._a = a;   }   public int A   {        get { return this._a; }       set { this._a = value; }   }}在类ClassA里面有一个私有的变量_a,我们通过声明属性A,用GET来返回_a的值,用隐藏参数value来为_a赋值,这样就可以实现外部成员对其值的获取(int val = ClassA.A;)和赋值(ClassA.A = 1;)操作了.当get和set同时存在时表示这个属性是可写可读的,当然也可以只存在get也就是说只能访问而不能更改其值,如果只存在set那么就刚好相反只能对其进行赋值操作了.同果我们也可以通过属性来增加一层逻辑,比如说我们有优秀学员的类,其分数必需大于60分,那么我们可以在set下面加一层限制   public int A   {        get { return this._a; }       set {               if(value >= 60)              this._a = value;            }   }
但是有的程序里 private string strName; public string StrName { get { return strName; } set { strName = value; } }这个get set段里,也没有判断 过滤什么的!get只是取出strName的值set只是设置strName的值这和public string strName;有什么区别?还是为了以后修改做准备?


.............................

这是C#中的属性 public string UserName { get { return this._username; } set { this._username = value; } } 通俗来讲..get是获取值 set是设置值比如这句:get { return this._username; } 如果调用这个get方法 就能获得方法return的 this._username(返回的值)调用方法:Console.Write(对象.UserName);(输出该属性的值)比如这句:set { this._username = value; } 如果调用这个set方法 就可以重新设置username的值 value就是你新设置的值调用方法:对象.UserName="新值";(为该属性附新值) 个人理解:1.在封装数据库字段的时候非常有用,相信大家都这么用。2.你可以吧UserName当成一个这个类的一个属性,这个属性由字段_username的值确定,也可能不是_username,而是经过_username变化的。你可以在GET、SET中作相应的处理。比如这样:public string UserName { get { if(string.IsNullOrEmpty(_username))return ERRORCODE;return this._username; } set { if(string.IsNullOrEmpty(_username))this._username = defaultusername;this._username = value; } } 所以,封装以后,比没有封装更加方便。如果你要做条件判断、转换等 操作,在GET、SET你做会更方便。而且还保护了原字段。假设_username是数据库字段,如果程序员不想公开这个属性,而是做一些变换,这样数据安全性更高。

............

 

原创粉丝点击