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

我知道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是数据库字段,如果程序员不想公开这个属性,而是做一些变换,这样数据安全性更高。

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

 

你可能感兴趣的:(封装,C#,get,set,声明属性)