zoukankan      html  css  js  c++  java
  • C#篇(一)——字段与属性

    字段和属性有什么区别?

        class Student
        {
            private int age;
            public int Age
            {
                get
                {
                    return age;
                }
                set
                {
                    age = value;
                }
            }
        }
    

    你有没有想过:为什么要有属性?为什么不直接将字段设置为公有?
    简单的总结:属性更像是方法,用属性来代替直接访问字段可以有更好的逻辑控制。
    比如:

        class Student
        {
            private int age;
            public int Age
            {
                get
                {
                    return age;
                }
                set
                {
                    if(age > 0 && age < 200)
                    {
                        age = value;
                    }
                    else
                    {
                        throw new Exception("年龄不合法");
                    }
                }
            }
        }
    

    当然也可以通过属性来限制只能设置或获取某一个字段的值。

    一个属性是否必须和一个字段相对应?答案是不一定。

        class Student
        {
            private int age;
            public int Age
            {
                get
                {
                    return 0;
                }
                set
                {
                   //...
                }
            }
        }
    

    自动实现的属性,实现的原理?
    在c#中可能会经常看到类似下面的属性:

        class Student
        {
            //自动实现的属性
            public int Age{ get; set; }
        }
    

    那它的内部实现机制呢?————单独的属性是不能存储数据的,数据都保存在字段中。
    这是C#提供的一种简单的语法,称为自动实现的属性,声明属性而不提供get/set方法的实现,C#会自动的声明一个私有字段(编译器幕后做的工作)。在本例中,字段类型是int,也就是属性的类型。另外,编译器会自动实现get_Age和set_Age方法,分别返回和设置字段中的值。
    get_Age和set_Age从哪来?
    下一篇 C#篇(二)——属性的实质 我们再做分析。

  • 相关阅读:
    绿色版QQ2010SP3手记
    使用DQL语句查询数据
    Oracle 数据库密码过期问题
    redis语法与命令
    Redis安装与启动
    centos 7下搭建Redis5.x版集群
    MySQL 命令行操作教程
    Redis集群分片原理及选举流程
    截取文件名与后缀名
    Java POI读取excel 支持xls、xlsx
  • 原文地址:https://www.cnblogs.com/forcheng/p/6483919.html
Copyright © 2011-2022 走看看