• C# 属性与字段


    属性和字段的区别:

    • 属性是逻辑字段,是字段的扩展,并不占用实际的内存;而字段占用内存空间。
    • 属性可以被其他类访问;而非public的字段不能被直接访问。
    • 属性可以对接受的数据在范围上做限定;而字段不能。
    • 属性原则上是方法内容保存在代码区,

     常规属性和自动属性:

     常规属性,一般我们手动定义 私有字段并定义属性访问该字段,这就是常规属性,

            private int _age;
            public int Age
            {
                get
                {
                    //可添加逻辑最后已return返回
                    return _age > 10 ? _age : 0; 
                }
                set
                {
                    if (!_age.Equals(value))
                    {
                        //TODO 添加逻辑 最后给私有字段赋值
                        _age = value;
                    }
                }
            }
    

      

     自动属性,一般我们做数据库到C#集合的映射时只定义一个属性,

    Public int Age { get;set;}

     1.自动实现的属性必须同时声明 get 和 set 访问器。创建 readonly 自动实现属性时,需要将set 访问器设置为private 。

     2自动实现的属性上可以使用特性,不能用在支持后备字段上。 如果属性的后备字段上使用特性,则应该只创建常规属性。

     3.自动实现属性get,和set中不能包含特殊的逻辑处理。与字段类似,但不同于字段。与字段不同,属性不作为变量来分类,不能将属性作为 ref参数或 out参数传递。

    备注:若有遇到接口中定义属性(属性属于方法故接口可以定义),但是在做数据库数据映射并保存的时候,是不能用接口做映射的,因接口不能定义字段,而属性不保存内容,只有字段才保存内容,当一个类继承接口则这个类就有了接口的属性,并自动定义字段(自动属性),就可以保存内容了

  • 相关阅读:
    layui的模块化和非模块化使用
    layui实现类似于bootstrap的模态框功能
    ajax下载文件
    【IDEA】IDEA中maven项目pom.xml依赖不生效解决
    主-主数据库系统架构
    MyEclipse x.x各版本终极优化配置指南
    Cactus入门
    有史以来最出彩的编程语言名字
    安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果
    第一次讲课总结
  • 原文地址:https://www.cnblogs.com/wangboke/p/9165997.html
Copyright © 2020-2023  润新知