基础知识系列☞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的一个语法糖,直接就是属性名;你或许疑惑没有字段,将值存到哪里了?

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

 

posted @ 2016-05-30 16:01  zh89233  阅读(170)  评论(0编辑  收藏  举报