• 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#篇(二)——属性的实质 我们再做分析。

  • 相关阅读:
    java反射机制
    java的hashmap与hashtable说明,简单易理解
    awk
    python的w+到底是什么
    hive深入浅出
    【OpenCV新手教程之十五】水漫金山:OpenCV漫水填充算法(Floodfill)
    对你相同重要的非技术贴,10件事证明你跟错了人
    SVM中为何间隔边界的值为正负1
    pushlet服务端推送——多播
    谁洗碗,搭载我的技术目标,起航。
  • 原文地址:https://www.cnblogs.com/forcheng/p/6483919.html
Copyright © 2020-2023  润新知