`
Cycy_2014
  • 浏览: 4556 次
社区版块
存档分类
最新评论

C# 类属性封装、字段的详解

    博客分类:
  • C#
阅读更多

 今日敲代码时,突然感觉对类的属性封装、字段有点犯迷糊了。。连基础的都不知道了,那敲的代码怎么能严谨高效的。果断拿起各种高级编程、大全啥的翻起来~~这不再把自己的理解写下来(定义都是直接抄书的),献给同样迷糊的小伙伴。

    先说下类的成员,它分为数据成员和函数成员。数据成员,简单点可以理解成类的数据,包含了字段、常量(const)、事件;函数成员,就是操作类中的数据,包含方法、属性、构造函数、终结器(析构函数)、运算符、索引器。(就提一下,方便后面说下去,要都解释就偏题了)字段就是类里定义的变量,而属性则是字段的拓展。所以在使用属性前要结合一个正常的字段声明,这个字段称为属性的后备字段(backing field):

private int numberOfCows; 

public int NumberOfCows

{

       get

       {

              return numberOfCows;

       }

       set

       {

              numberOfCows = value;

              BagOfFeed = numberOfCows * FeedMultiplier;

       }

}

 

读取NumberOfCows字段时会运行get方法,返回私有字段numberOfCows。而设置NumberOfCows字段时,会调用set方法,看上去这个方法没有参数,其实value就是它的参数,其中包含为这个字段设置的值。其实这就是用属性来对字段进行封装(这就是封装啦)。

使用封装还可以实现对属性的只读、只写:

1 public string Name { get; private set; }//只读
2 public string Name { private get; set; }//只写

这样写属性时,编译器会自动创建private string name。这种是会自动实现后备成员变量的自动实现属性。

如果是:

1 public string Name { get; set; }

这样的没有啥限定的属性,其实和公有字段没多大区别了。

但是从面向对象的角度来讲,公开的是方法,而不是字段哦。而且微软也推荐:所有的字段都设置为私有字段,如果要使用它们,则把它们封装成属性。对于这样简单的set或get,编译器会自动进行inline处理,没有函数进出栈的性能损失。所以还是建议不要用公有字段了,给字段穿件衣服吧~~

分享到:
评论

相关推荐

    c#类成员(字段、属性、方法、事件)

    ### C#类成员详解:字段、属性、方法、事件 #### 字段:数据的封装与存储 在C#中,**字段**是类内部用于存储数据的成员,它允许类封装状态信息,使得对象能够拥有自己的数据。字段可以是任何数据类型,包括基本...

    C#封装详细解释

    ### C#封装详解 #### 封装的概念及意义 封装是面向对象编程(OOP)中的一个核心概念,它指的是将数据及其对数据的操作绑定在一起,同时隐藏这些数据和操作的内部实现细节。简而言之,封装是将软件的实现细节进行隔离...

    C#封装一个打印公共类的简单方法.pdf

    在详细解析给定文件内容之前,需要先确认文件标题和描述的信息,这些信息表明了文档的核心内容是关于“C#封装一个打印公共类的简单方法”。显然,文档中包含了有关如何在C#编程语言中创建和实现一个打印功能类的方法...

    C#语言规范3.0版详解

    ### C#语言规范3.0版详解 #### 一、简介 C# 是一种现代、面向对象且类型安全的编程语言。它结合了多种语言的优点,包括 C 和 C++ 的高效性以及 Java 和 Visual Basic 的易用性。C# 语言规范3.0版为开发者提供了详细...

    C#编程语言详解C#编程语言详解[评价可免费]

    C#是完全面向对象的编程语言,支持类、对象、封装、继承、多态等核心概念。类是对象的蓝图,可以包含字段(成员变量)和方法(成员函数)。继承使得子类可以扩展或重写父类的属性和行为,而多态则允许使用一个基类...

    C#类修饰符大全

    ### C#类修饰符详解 在C#编程中,类及其成员的可见性和特性可以通过不同的修饰符进行控制。本文将详细介绍C#中的类修饰符及其使用场景,帮助开发者更好地理解和运用这些修饰符。 #### 类修饰符 - **public**:...

    C#类中的属性使用总结(详解类的属性)

    属性是C#编程语言中一个重要的特性,它作为类的成员,提供了对私有字段的封装和控制。属性提供了一种灵活且安全的方式来访问和修改数据,确保了数据的完整性和安全性。以下是对属性的详细解释: 1. **属性的定义**...

    C#100例详解

    - 属性与字段:了解属性作为访问器的优势,以及字段的使用。 - 方法重写与虚方法:了解Override和Virtual关键字的作用。 - 接口:接口的定义与实现,以及接口与抽象类的对比。 5. **集合与泛型** - 集合类:...

    插图详解C# 2008(用插图的方式讲解C#2008)

    书中会详细解释如何定义类,包括字段(成员变量)、属性、方法等,以及如何实例化对象和调用其成员。 2. 控制流语句:包括条件语句(if、else、switch)、循环(for、while、foreach)和跳转语句(break、continue...

    详解如何获取C#类中发生数据变化的属性信息

    本文将深入探讨如何在C#类中获取并记录数据变化的属性信息。首先,让我们了解一下这个问题的背景。 在传统的做法中,当用户修改数据时,我们可能会将整个对象序列化为JSON字符串并存储在日志中。然而,这种方法并不...

    9.C#编程语言详解.rar

    11. 属性、索引器和扩展方法:这些特性为类增加了额外的功能,比如属性提供了一种访问字段的简便方式,索引器使得类可以像数组一样被访问,而扩展方法则允许在不修改原有类的情况下为其添加新功能。 12. C# 8.0及...

    C#入门教程手册详解

    《C#入门教程手册详解》是一本专门为C#编程初学者设计的详尽指南,旨在帮助读者快速掌握C#的基本语法、核心概念以及高级特性。本书不仅覆盖了C#的基础知识,还深入探讨了面向对象编程的核心原则,为读者提供了全面而...

    c#入门详解

    2. **类和对象**:C#是面向对象的语言,其核心概念包括类、对象、封装、继承和多态。理解和创建类是学习C#的基础,对象则是类的实例。继承允许你从现有类创建新的类,多态则允许你使用基类引用派生类对象。 3. **...

    ACCESS数据库C#操作类

    ### ACCESS数据库C#操作类详解 #### 概述 在软件开发中,数据库操作是必不可少的一环,尤其在处理大量数据或实现复杂功能时。C#作为一种强大的面向对象的编程语言,提供了丰富的库来简化数据库操作。在本篇文章中...

    C# 封装的海康DVR-DVS 客户端SDK 类.txt

    ### C# 下海康DVR-DVS客户端SDK封装解析 #### 概述 在软件开发领域,特别是视频监控系统开发中,与硬件设备的交互往往需要通过特定的API来实现。对于海康威视(Hikvision)这样的硬件制造商提供的设备而言,其原生...

    C# 类的声明详解

    - **属性(Properties)**:提供对字段的封装,提供访问控制和验证。 - **索引器(Indexers)**:允许通过类似数组的方式访问类的成员。 - **运算符重载**:可以自定义类的算术或比较运算符行为。 - **事件...

    C#编程语言详解 Part1

    ### C#编程语言详解 Part1 知识点总结 #### 一、简介 - **Hello World**: C#中创建一个简单的“Hello World”程序是非常直接的。这通常用于展示语言的基础语法,例如如何定义主方法(`Main`),以及如何使用控制台...

    点和直线类文档(包含程序和难点解答)c#

    - **封装属性**:`A` 和 `B`,与私有字段相对应,用于外部代码读取和设置斜率和截距。 - **构造函数**:有两种构造方式,一种根据斜率和截距创建直线对象,另一种根据两个`Point`对象创建直线,通过两点确定直线的...

    详解C#中的属性和属性的使用

    在C#编程语言中,属性(Property)是一个重要的特性,它提供了一种安全且灵活的方式来存取类的私有字段值。属性本质上是封装了getter和setter方法的特殊成员,通常用于模拟公有数据成员,但又具备更好的控制和安全性...

Global site tag (gtag.js) - Google Analytics