C#:常规属性和自动实现的属性

根据属性的实现方式,属性可分为自动实现的属性和常规属性。

常规属性需要具体的人为的实现get访问器或者set访问器,而且一般需要有一个字段与之相对应;而自动实现的属性的get和set访问器的实现部分被省略掉了,而且代码中不需要有相对应的字段。

常规属性:

    public class Person
    {
        //-----------------------
        //普通属性
        //-----------------------
        private string name;
        /// <summary>姓名</summary>
        public string Name
        {
            get
            {
                return this.name;
            }
            set
            {
                this.name = value;
            }
        }
    }

自动实现的属性:

    public class Person
    {
        //-----------------------
        //自动实现的属性
        //-----------------------
        /// <summary>姓名</summary>
        public string Name
        {
            get;
            set;
        }
    }

可以给自动实现的属性的get访问器或者set访问器添加访问权限修饰符(private,protected,internal),以控制该属性的访问权限。

(*注意给get或者set访问器添加的访问权限修饰符的访问权限,必须比该属性整体的访问属性的访问权限要小)

通过给get或者set访问器添加的访问权限修饰符,实现只读或者只写:

    public class Person
    {
        //-----------------------
        //自动实现的属性实现只读
        //-----------------------
        /// <summary>姓名</summary>
        public string Name
        {
            get;
            private set;
        }
    }
    public class Person
    {
        //-----------------------
        //自动实现的属性实现只写
        //-----------------------
        /// <summary>姓名</summary>
        public string Name
        {
            private get;
            set;
        }
    }

自动实现的属性有以下几点需要注意:

①必须同时实现set访问器和get访问器,缺一不可;

②自动实现的属性,编译器在运行时会自动生成一个私有的字段,这个自动生成的字段不能够直接访问;

③当需要实现对数据的合法性验证或者其它特殊处理的时候不能用自动实现的属性。

C#:常规属性和自动实现的属性,布布扣,bubuko.com

时间: 2024-08-28 04:49:27

C#:常规属性和自动实现的属性的相关文章

38属性的种种,只读只写属性、自动属性、静态属性、抽象属性、接口属性

□ 只读属性 public class Example {     string name;     public string Name     {         get {return name;}     } } □ 只写属性 public class Example {     string name;     public string Name     {         set {name = value;}     } } □ 可读可写属性 public class Examp

MySQL 设置表的属性值自动增加

属性值自动增加,比如 id 这一列,每新增一条记录,id 字段值自动加 1. 注意:设置自动增加的字段必须为主键的一部分 语法:字段名  数据类型  AUTO_INCREMENT

spring自动装配Bean属性

spring提供了3种类型的自动装配 byName:把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中. byType:把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应属性中. constructor:把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean的对应属性中. byName自动装配 <bean id="roles" class="cn.com.ztz.spring.model.Roles&q

设置表的属性值自动增加

设置表的属性值自动增加,比如插入第一条记录时 id 为 1,插入第二条记录时 id 为 2,以此类推,没增加一条记录,字段值自动加 1 mysql> CREATE TABLE tb_emp8    -> (    -> id INT(11) PRIMARY KEY AUTO_INCREMENT,   # 指定员工的编号自动递增    -> name VARCHAR(25) NOT NULL,    -> deptId INT(11),    -> salary FLOA

Spring - bean的autowire属性(自动装配)

当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注入,如果A的id因为某种原因修改了,那么所有引用了A的bean的<ref/>标签内容都得修改,这时候如果使用autowire="byType",那么引用了A的bean就完全不用修改了.autowire到底都什么用?我们继续往下看. autowire的用法: <bean i

TinyMCE 粘贴HTML代码,避免style属性被自动清除

TinyMCE在粘贴含有style属性的HTML代码时,会自动清除style属性,设置 extended_valid_elements 也只能在Firefox浏览器起作用,Chrome无效. extended_valid_elements: 'div[style|class|id]' Chrome下即使设置了 inline_styles: true, schema: 'html5', 也没有用 无奈去看TinyMCE源码,发现如果去掉 plugins 里的 paste 就不会被剔除样式,最终在

Spring4-自动装配Beans-按属性名称自动装配

1.创建Maven项目,项目名称springdemo15,如图所示 2.配置Maven,修改项目中的pom.xml文件,修改内容如下 <project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

用Emmet写CSS3属性会自动添加前缀

CSS3的很多属性都包含浏览器厂商前缀,用Emmet写CSS3属性会自动添加前缀,比如输入trs 会展开为: -webkit-transition: prop time; -moz-transition: prop time; -ms-transition: prop time; -o-transition: prop time; transition: prop time;

UIView的自动尺寸调整属性autoresizesSubviews 属性

自动尺寸调整属性autoresizesSubviews //高度自动伸缩,右边间距自动伸缩 self.autoresizesSubviews = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleRightMargin; UIViewAutoresizingNone 这个常量如果被设置,视图将不进行自动尺寸调整. UIViewAutoresizingFlexibleHeight 这个常量如果被设置,视图的高度将和父视图的高度