思维的乐趣

Enjoy it
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET/C# 中关于属性(Property)的两个小知识点

Posted on 2010-07-15 23:52  szh114  阅读(563)  评论(0编辑  收藏  举报

1:类似于这样的代码:

public class Car
{
  private string name;
  public string Name
  {
  get{return name;}
  set{name=value;}
  }
...
}

 

要用自动属性:


public class Car
{
  public string Name{get;set}
...
}

 

在这儿使用Property,而不是仅仅使用public 成员变量的好处在于:

(1):维持了封装原则,不暴露公共变量给外界的习惯;

(2):便于以后可能会有在里面进行控制逻辑的添加。或者以后可以便于将get , set 中的某一个读或写的方向关闭;

(3):在使用元数据时,编译器只认属性不认成员变量。举例,ParseChildren(true, "MemberName")   (这点我是网上看来的,其实我没看懂是什么意思。。。暂时先列在这儿);

(4):在绑定数据的时候,属性有特殊的用处(这个我也没怎么理解。。。)。

 

2: 自动属性无法指定默认值,如果要达到这种效果,只能在构造函数中对其进行初始化!

     另外,如果要指定自动属性,必须同时指定 get;set; 缺一不可。会编译通不过。

  public string Name {get;set;}  这样才行,

  public string Name { get; } 或 public string Name { set; } 都不行!

  那如果想自动属性,且外界只读或者只写怎么办呢?

  要这样写:

  public string Name { get; private set; }

  public string Name { private get; set; }