C#中的自动属性是什么意思啊?
我看见书上这样定义一个属性,并称它为自动属性:publicintX{get;set;}这里没有给get和set块提供显式的实现代码:书上的说这些块实现的代码都由编译器提供...
我看见书上这样定义一个属性,并称它为自动属性:
public int X{get;set;}
这里没有给get和set块提供显式的实现代码:书上的说这些块实现的代码都由编译器提供。
我不明白编译器提供的是怎样的代码,我调用这样的一个自动属性能做些什么? 展开
public int X{get;set;}
这里没有给get和set块提供显式的实现代码:书上的说这些块实现的代码都由编译器提供。
我不明白编译器提供的是怎样的代码,我调用这样的一个自动属性能做些什么? 展开
6个回答
展开全部
自动属性就是写的时候只写一个属性,并不写字段,一般情况下也不实现。
使用自动属性方法:
有两个使用场景:
在接口中定义,继承接口的类就可以用了。
当有个字段不需要限制访问,为了编程习惯又不想写成公有字段,同时有懒得主动写那个字段名的时候,就使用自动属性吧。
自动实现属性代码:
public string str { get; set; } 相当于以下代码private string _str;public string str{get { return _str; }set { _str = value }}将一个域提升为属性,以后可以对这个属性进行扩展,加上有效性校验之类的代码。
展开全部
public string str { get; set; }
相当于以下代码
private string _str;
public string str
{
get { return _str; }
set { _str = value }
}
将一个域提升为属性,以后可以对这个属性进行扩展,加上有效性校验之类的代码。请参考资料
参考资料:http://blog.csdn.net/maybehelios/article/details/2910589
相当于以下代码
private string _str;
public string str
{
get { return _str; }
set { _str = value }
}
将一个域提升为属性,以后可以对这个属性进行扩展,加上有效性校验之类的代码。请参考资料
参考资料:http://blog.csdn.net/maybehelios/article/details/2910589
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2.0的时候我们定义属性要这么定义
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
到3.0的时候 新加了自动属性可以这么定义了
public int Age {get;set;}
public int Age {get;private set;}
最终生成的il代码都是一样的,也就是说上面的事情编译器帮你做了。
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
到3.0的时候 新加了自动属性可以这么定义了
public int Age {get;set;}
public int Age {get;private set;}
最终生成的il代码都是一样的,也就是说上面的事情编译器帮你做了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是定义了一个你不能访问到的内部私有变量,然后用这个内部变量来存储和读取你使用的值,跟你自己定义一个内部私有变量实现属性的访问是一样的,区别在于不用写那么多代码了,不用自己定义私有变量了。这种写法无法实际业务需求,比如赋值的时候要求不能小于10,那就无法实现了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CLR说,自动实现的属性(AIP),它是为了封装一个支持字段而创建的一个属性。
不能用,尽量不用
第一、字段属性可以包含初始化,而AIP必须在构造中显式初始化每个AIP
第二、AIP编译时会每次重新生成新的名字
第三、调试时不好加断点
还有,生成AIP必然是可读可写,可控性不高!!!
不能用,尽量不用
第一、字段属性可以包含初始化,而AIP必须在构造中显式初始化每个AIP
第二、AIP编译时会每次重新生成新的名字
第三、调试时不好加断点
还有,生成AIP必然是可读可写,可控性不高!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询