欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【C# 3.0 的自动属性(Automatic Properties)】,下面是详细的分享!
C# 3.0 的自动属性(Automatic Properties)
使用自动属性后,你可以不用手工声明一个私有成员变量以及编写get/set逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set 操作。系统为你产生的私有变量在IDE中,你是看不到的,如下图:

当然如果你希望属性中有些赋值或者取值逻辑校验,自动属性可是不适合你的。
上面的代码我们编译后,再用 Reflector 反编译后,我们可以看到上述代码中的属性变成了如下代码:这个编译器给我们产生的私有变量,显然不是那么容易重名的。
[CompilerGenerated] private string <>k__AutomaticallyGeneratedPropertyField0; public string Name { [CompilerGenerated] get { return this.<>k__AutomaticallyGeneratedPropertyField0; } [CompilerGenerated] set { this.<>k__AutomaticallyGeneratedPropertyField0=value; } } |
注意:如果你只希望属性有 get 或者 set 方法,这些情况都是无法使用 自动属性的,需要你自己来书写。否则就会报如下的错误:
| 'ConsoleApplication1.MyClass.Name.set' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors. |
但是 get 和 set 访问级别不一样,比如一个是 public,一个是 internal,则可以书写成下述方式,而不会报错误。
| public int ID { get; internal set; } |
以上所分享的是关于C# 3.0 的自动属性(Automatic Properties),下面是编辑为你推荐的有价值的用户互动:
相关问题:C# 3.0 自动属性 写法
答:标准写法就是这样。上面的是3.0的提供的简洁的写法,都是一样的。 将光标放在你在要生成读写器的对象上。 按住Ctrl+R+E VS自动帮你封装字段。 >>详细
相关问题:C#中自动属性有什么用?
答:自动属性就是写的时候只写一个属性,并不写字段,一般情况下也不实现。 使用自动属性方法: 有两个使用场景: 在接口中定义,继承接口的类就可以用了。 当有个字段不需要限制访问,为了编程习惯又不想写成公有字段,同时有懒得主动写那个字段名... >>详细
相关问题:C#里的 自动属性是不是相当于简写了 通常的setget...
答:public class AAA{ private int a; public int A { get{ return a;} set{ a = value;}}与以下的写法一样的 public class AAA{ public int A { get; set;}} >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
