首页 新闻 会员 周边

在c#中 自定义属性 有 get set 和没有get set 的区别是什么?

0
[待解决问题]

求解!!!!!!!!!!!!!!  !!!!!!!!!!!!!!!!!!

蓝鸟先生的主页 蓝鸟先生 | 菜鸟二级 | 园豆:206
提问于:2015-11-06 10:52
< >
分享
所有回答(5)
1

属性:public int age{get;set;}

   public int age{} 这种编译不通过,get和set至少有一个,分别代表,取值和赋值

变量:public int age;

CodeHsu | 园豆:5468 (大侠五级) | 2015-11-06 11:37
1

一个属性,就是用来给内部或者外部访问的,读写权限总要有一个,get,set 就是让你知道属性是否可读可写。

SouthSky | 园豆:229 (菜鸟二级) | 2015-11-06 12:36
0

get;set;就像2楼说的,对变量的赋值取值操作,还可以设置他们的读写权限,public virtual string Styles { get; protected set; }相对与只读的效果

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-11-06 16:24
1
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;
}

 

 

徐大腿 | 园豆:420 (菜鸟二级) | 2015-11-06 18:15
0

一个public属性一定要有一个访问权限get或者set,如果设置成private也就不需要设置了

DrunkMan | 园豆:166 (初学一级) | 2015-11-07 22:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册