1.   属性结合字段和方法得多个方面,对于对象的用户来说,属性就像字段(这样就可以修改属性值或者访问),对于类的实现者来说,属性包括两个各部分get访问器(用于读取属性)和set访问器(用于设置属性),与字段不同的是属性不会当做变量,故不能够降属性作为ref和out参数传递。

public class Property

            {
                private int month = 1;   //Backing store
                public int Month
                 {
                    get
                        {
                            return month;
                        }
                   set
                       {
                            if ((value > 0) && (value < 13))
                              {
                                   month = value;
                               }
                        }
                     }
                 public void ShowMonth()
                 {
                      System.Console.WriteLine(month);
                  }
               }
 
            Property myPro = new Property();
            myPro.ShowMonth();
            myPro.Month = 12;
            myPro.ShowMonth();
            myPro.Month = 13;//修改属性值大于12后,则不会处理(属性set访问器已作出限制)
            myPro.ShowMonth();
            System.Console.ReadKey();
       属性使用私有字段跟踪实际值。 属性的数据的实际位置通常被称为属性的“后备存储”。 属性 使用私有字段作为后备存储,这很常见。 将字段被标记为私有,确保只能通过调用属性来对其进行更改。 
 2.  示例演示如何访问由派生类中同名的另一属性隐藏的基类中的属性。
 public class Employee
    {
        private string name;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        public virtual void showBase()
        {
            System.Console.WriteLine(name);
        }
    }
//有意(new)隐藏了基类中的属性
    public class Manger: Employee
    {
        private string name;
        public new string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value + ": manger";
            }
        }
        public new void showBase()
        {
            System.Console.WriteLine(name);
        }
    }
}
            //验证派生类如何隐藏基类中属性,注意和重写的区别,参考C#之隐藏与重写
            Manger mag = new Manger();
            mag.Name = "John";
            mag.showBase();
            ((Employee)mag).Name = "Lucy";
            ((Employee)mag).showBase();
 
 结果:
John: manger
Lucy
 
 
 
 
 
 

C#-之属性(2)的更多相关文章

  1. jqu

    1 /*2 * 说明:3 * 本源代码的中文注释乃Auscarlin呕心沥血所作.旨在促进jQuery的传播以及向广大jQuery爱好者提供一个进阶4 *的途径,以让各位更加深入地了解jQuery,学 ...

  2. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  3. 探究@property申明对象属性时copy与strong的区别

    一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...

  4. CSS HTML元素布局及Display属性

    本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...

  5. CSS float 浮动属性

    本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式:介绍文档流.浮动层以及float属性. 2. float:left :介绍float为 left 时的布局方式. 3. ...

  6. CSS Position 定位属性

    本篇文章主要介绍元素的Position属性,此属性可以设置元素在页面的定位方式. 目录 1. 介绍 position:介绍position的值以及辅助属性. 2. position 定位方式:介绍po ...

  7. npm package.json属性详解

    概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...

  8. JavaScript特性(attribute)、属性(property)和样式(style)

    最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...

  9. 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~

    前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道 ...

  10. jQuery的属性

    The Write Less , Do More ! jQuery的属性 1. attr(name|properties|key,value|fn) : 设置或返回被选元素的属性值 ①获取属性 < ...

随机推荐

  1. Devexpress 常用的功能

    一 .GridControl的删除操作 private void rILinkEditInfoDel_Click(object sender, EventArgs e) { if (XtraMessa ...

  2. 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目

     随着使用Spring进行开发的个人和企业越来越多,Spring从一个单一简介的框架变成了一个大而全的开源软件,最直观的变化就是Spring需要引入的配置也越来越多.配置繁琐,容易出错,让人无比头疼, ...

  3. c#封装DBHelper类

    public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> None, /// <s ...

  4. H5与C3权威指南笔记--box-shadow

    box-shadow 用于给盒子添加阴影效果.IE9+ 举个栗子:box-shadow: inset 5px 5px 5px red; inset可选,该值会让阴影出现在盒子内部. 第一个5px是阴影 ...

  5. 七、Android动画

    Android的动画可以分为三种:View动画.帧动画和属性动画,帧动画也属于View动画的一种,只不过它和平移.旋转等常见的View动画在表现形式上略有不同而已. 1.View动画 平移动画:Tra ...

  6. 关于如何使用xposed来hook微信软件

     安卓端  难点有两个  收款码的生成和到帐监听   需要源码加 2442982910

  7. 一种解决Android studio 3.0 Build报错的方法

    问题背景: 最近在开始使用AndroidStudio3.0,刚好有一个开源的项目(Material-Movies),需要学习下.因为该项目比较早(2015年),而这段时间AndroidStudio和G ...

  8. Unity 2D 效应器与来回移动的实现

    1.效应器 Point Effector 2D: 点效应器.进入区域,吸引或排斥物体 Area Effector 2D: 区域效应器,可以用来做马里奥的管道移动效果 Surface Effector ...

  9. 用存储过程向数据库添加大量数据【mysql】

    预分配ID的设计,需要先为数据库生成大量的数据.比如对用户ID有要求的系统,那么用户ID就要预先生成. 通过python,php,c/c++/c#,js等程序生成也是可以,但需要这些程序环境,而且单条 ...

  10. Linux中常用来查看进程的命令PS

    查看所有运行中的进程:ps aux | less 显示所有进程: ps -A / ps -e 显示进程的树状图:pstree