zoukankan      html  css  js  c++  java
  • 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参数传递。

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

  • 相关阅读:
    Linux主要shell命令详解(下)
    mget命令, ftp命令详解
    VI 基本可视模式
    vim使用技巧
    cd及目录快速切换
    du命令解决linux磁盘空间满的问题(很不错的哦)
    Mysql删除数据后磁盘空间未释放的解决办法【转】
    MYSQL-innodb性能优化几个点
    Apache服务器出现Forbidden 403错误提示的解决方法总结
    MySQL 分区表原理及数据备份转移实战
  • 原文地址:https://www.cnblogs.com/wangboke/p/9165997.html
Copyright © 2011-2022 走看看