一、c#中自定义属性有无get、set 的区别
public string Name;//一般属性,可写、可读
Public string Email{get;set;}//可写、可读
Public string Age{get;}//只读
public string Height{set;}//只写
-
首先,这是一堆属性,Name属性在C#里面可以称之为字段,只要在同一个命名空间下面就可以可读可写。
-
如Email属性是也可度可写的,那么这两个区别在哪呢,当然在你的业务逻辑上,如果我想对Email的格式做出校验(当你设置邮箱格式的时候就可以校验),那么Email就可以,
Name属性这种写法就不能加入逻辑代码。而且,Name属性编译之后,就是一个字段Name,但是Emai{get;set;}属性编译之后就是两个函数:
//字段
private string email;
//读取邮箱
public string GetEmail(){
return this.email;
}
//设置邮箱
public void SetEmail(string value){
this.email=value;
}
- 那么Age{get;}这个属性是只读的,那么在编译之后会变成一个函数:
private string age;
public string GetAge(){
return this.age;
}
- 同样的,可以得出 Height{set;}会编译成一个函数:
private string height;
public string SetHeight(string value){
this.height=value;
}
总之,一个属性,就是用来给内部或者外部访问的,读写权限总要有一个,get,set 就是让你知道属性是否可读可写。
资料:https://q.cnblogs.com/q/77170/
网友评论