1.What?什么是属性

 
    属性是对字段的封装。当类中有了一个字段以后,为了控制这个字段对外的一些表现(例如可访问性,是只读?只写?或者对自读赋值做一些必要的验证等等)我们把这个字段私有化(private),同时留出一个公共的(public)方法,用于访问这个字段。 这个方法就是属性。
 
2.Usage?如何使用
 
对于属性,.NET总提供了两种方式定义属性。
 
1)常规定义方式
//定义一个私有字段。
//1.在需要封装的字段上 Ctrl + R   ,  Ctrl + E。可以自动封装属性。
//2.属性的get和set可以额外设置访问修饰符。
private string _name;                                            
public string Name
{
      get
       {
             return this._name;
       }
       set
       {
             this._name =Value;
       }
}
 
2.简化写法
/*1.这种写法实质上与上边的写法一样,通过Reflector可以看到。
简写的属性,编译时编译器会自动为我们生成一个私有字段。
  2.因为私有字段是编译器加的,为了保证名字不重复,名字看起来很怪异。
所以在二进制序列化时,这种写法会有一点小麻烦。 到时候再说。*/
public string Name
{
       get;
       set;
}
 
3.Essence 属性的本质
 
属性的本质是什么?初听这话是不是被问懵了?
对于大多.NET程序员来说,属性就是属性呗,get,set呗,还能怎滴?
但是对于Java程序员来说,他们想对字段封装是需要这样的。
public void Set_Name(int value)
{
    this._name= value;
}
public int Get_Name()
{
    return this._name;
}
发现没有?他们用的是一个方法。
 
那么问题来了?
.NET有什么不同吗? 答案是否定的!!
通过反编译工具,我们发现我们使用的属性get set。
最后也会被编译工具编译成 如上的两个方法。
“而.NET属性中的GET、SET,乃至简化写法,都属于.NET语法糖的范畴,是Microsoft简化了我们的写法,让.NET开发人员用着更方便!”
 
 

.NET中的属性的更多相关文章

  1. Objective-C中的属性机制

    Objective-C 2.0中的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现.在学习OC中属性之前我们先要知道为什么要为变量实现gett ...

  2. Javascript中prototype属性详解

    在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...

  3. 转载:java 中对类中的属性使用set/get方法的意义和用法

    经常看到有朋友提到类似:对类中的属性使用set/get方法的作用?理论的回答当然是封闭性之类的,但是这样对我们有什么作用呢?为什么要这样设计?我直接使用属性名来访问不是更直接,代码更简洁明了吗?下面我 ...

  4. DTD中的属性类型

    <![CDATA[文本内容]]> DTD中的属性类型 全名:character data 在标记CDATA下,所有的标记.实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待, ...

  5. java-读取类中的属性名称和值

    方法 /** * 获取类中的所有属性明名称和值(因涉及到可能会是继承关系的父类,所以从f中去属性名称,从f2中取值,两个可以一样,也可以使父类) * @param f:读取属性类(如果取父类的,则这里 ...

  6. 深入理解css中position属性及z-index属性

    深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...

  7. 深入理解JavaScript中的属性和特性

    深入理解JavaScript中的属性和特性 JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaSc ...

  8. 使用angularjs定义html中的属性ng-attr-(suffix)

    html中的属性很多,同样可以使用angularjs来定义: ng-attr-(suffix)=只能使用变量定义 <div title="angularjs中的title"& ...

  9. 在Asp.Net MVC中实现RequiredIf标签对Model中的属性进行验证

    在Asp.Net MVC中可以用继承ValidationAttribute的方式,自定制实现RequiredIf标签对Model中的属性进行验证 具体场景为:某一属性是否允许为null的验证,要根据另 ...

  10. XCODE UITextField 中的属性和用法

    XCODE  UITextField  中的属性和用法 一些基本的用法 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedR ...

随机推荐

  1. MethodNotAllowedHttpException

    原因:1.没有加表单{{csrf_field()}}:2.除get提交以外,其它提交方式都要csrf_token();3.提交的路由非法,没有定义.

  2. Python基础09 面向对象的进一步拓展

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们熟悉了对象和类的基本概念.我们将进一步拓展,以便能实际运用对象和类. 调用类的 ...

  3. bootstrap-响应式图片、辅助类样式

    响应式图片: <div class="container"> <!-- img-responsive 响应式图片 --> <div class=&qu ...

  4. C++学习23 虚函数详解

    虚函数对于多态具有决定性的作用,有虚函数才能构成多态.上节的例子中,你可能还未发现虚函数的用途,不妨来看下面的代码. #include <iostream> using namespace ...

  5. {JavaScript}栈和堆内存,作用域

    1.栈 stack”和“堆 heap”:         简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里.stack一般是静态分配 ...

  6. 光流算法:Brox算法

    参考论文:1. High Accuracy Optical Flow Estimation Based on a Theory for Warping, Thomas Box, ECCV20042. ...

  7. abap case when 例子

    DATA: gv_1 TYPE c. DATA: gv_2 TYPE i. gv_2 = 60. IF gv_2 >= 0 AND gv_2 < 60 . gv_1 = 'A'. ELSE ...

  8. Codeforces 404D [DP]

    /* 我是一个习惯后悔,但是没办法忍受内疚感的二货== 这题是个无脑dp,但是比赛大概20min没出...其实最后5min我好好想想简单化边界条件,可以出的. 题意: 给你一个长度为1e6的由?*01 ...

  9. (整理)C#实现UDP广播

    (一) IP地址解析 IP地址的类型:XXX.XXX.XXX.XXXA类: 1.0.0.1--126.255.255.254 最高位是0: 1个字节的网络地址和3个地址的主机地址 测试地址:127.X ...

  10. DatabaseError: no such table: django_session

    最近我也遇到这个问题了,从网上查了下,说是数据库同步出了问题,只需要运行如下命令:python manage.py syncdb就可以了 (这是django1.4之前的命令,1.4之后的是 pytho ...