zoukankan      html  css  js  c++  java
  • 基础知识系列☞C#中→属性和字段的区别

    "好吧...准备写个'基础知识系列',算是记录下吧,时时看看,更加加深记忆···"
    其实本来准备叫"面试系列"...

     字段、属性、你先知道的哪个概念?

    ***我个人来说先知道的是字段吧,,,刚开始一段时间一直觉得字段 是一个类型,是一个变量 ???(GG)那时候比较迷糊...

    你觉得那个概念重要点呢?

    ***刚开始我觉得属性重要点,毕竟那时候概念还不太清楚;

    →有字段了为什么还要属性呢?

    ***0001.限制只能给字段赋于某个范围的值;0010.要求字段只能读或只能写;0011.在改变字段时能改变对象的其他一些状态;很显然这些都是字段自己办不到的,当然还有很多好处...

    0001.属性没有存储数据的功能,数据都存在字段中,所以只有修改字段的数据才能更改数据,修改属性的值没用。

    0010.使用属性,避免将数据成员直接暴露给外界,维护私有字段(保证类的封装性);

    0011.可以做线程同步;

    0100.可以使用虚属性、或者抽象属性;

    0101.可以将属性置于interface中;

    0110.可以提供get-only或者set-only版本,甚至可以给读、写以不同的访问权限(C# 2.0支持)。

    √-说多少也不如自己动手写写代码...

    using System;
    namespace TestCode
    {
        /// <summary>
        /// 这是一个测试类
        /// </summary>
        class test
        {
            /// <summary>
            /// 字段
            /// </summary>
            private string _filed;
            /// <summary>
            /// 传统方式来定义的属性
            /// </summary>
            public string Filed
            {
                get { return _filed; }
                set { this._filed = value; }
            }
            /// <summary>
            /// 语法糖
            /// </summary>
            public string Property
            {
                get;
                set;
            }
            static void Main(string[] args)
            {
                Console.WriteLine("属性、字段测试code");
                Console.ReadKey();
            }
        }
    }

    代码中的Property是.NET的一个语法糖,直接就是属性名;你或许疑惑没有字段,将值存到哪里了?

    好吧,为什么叫语法糖呢,上图...

  • 相关阅读:
    Git命令之回退篇 git revert git reset
    sklearn的train_test_split
    JavaScript简介
    湖南省第八届大学生计算机程序设计竞赛D题 平方根大搜索
    C++ 11 标准 新增的Lambda表达式、for_each语法,改变了auto关键字的意义
    boost正则表达式 验证电子邮件地址
    C++ 11 标准 Lambda表达式
    JavaScript正则表达式 验证电子邮件地址
    C++11标准新增可变参数模板(variadic template)
    POSIX正则表达式 验证电子邮件地址
  • 原文地址:https://www.cnblogs.com/love-zf/p/5542792.html
Copyright © 2011-2022 走看看