`
窗户纸
  • 浏览: 19480 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

为什么要对字段封装属性

 
阅读更多

为什么要对字段封装属性? 每次有新人来,都要问这个问题,我直接对字段操作多省事呀,就像这样
public class A
{
publicstring _Name;
}

public Class B
{
private A _MyA;
public void DoB(string n)
{
_MyA._Name=n;
}
}
很多砖家会毫不犹豫的说,你这样“封装不好”,于是新人眨着两只无神而又水汪汪的大眼睛,分明是在说:“这不脱了裤子放X吗”,心里一肚子不服气。

但从编程角度说,封装为属性除了从外面看起来“顺眼”些,还有啥实际作用呢?

牛人会巴拉巴拉讲出一大套,我就说一点简单而实用的,那就是是从调试角度看问题。

在调试中,我们经常为使用断点跟踪的方式,检查变量当时的数值,如果按照上面写的方式,很多地方都可能会出现对_Name赋值的情况,如果我发现_Name被设置了非法的数据,而想知道在何地被赋值的时候,上面的写法就很麻烦,只能先找到所有调用过_Name的地方(如果是C++的开发环境,找起来更麻烦),然后一个一个的筛。

如果我们把代码写成这样:
public class A
{
privatestring _Name;
publicstring Name
{
get{...};
set{...};
}
}

public Class B
{
private A _MyA;
internal A MyA
{
get{...};
set{...};
}
public void DoB(string n)
{
MyA.Name=n;
}
}
调试的时候,只需要在Name.set的位置加断点,可以很快定位错误。

当然,一个好的习惯是对class内部的字段也尽量使用属性处理,就像class B中对 MyA的处理一样。就可以很容易的进行断点调试了。

分享到:
评论

相关推荐

    C# 生成属性 封装字段

    C# 生成属性 封装字段 多个字段一起生成 C# 生成属性 封装字段 多个字段一起生成

    C#字段封装器

    C#字段封装器通常是一个辅助类或属性,用于在字段与外部世界之间建立一个接口。这样做的好处包括: 1. **数据验证**:字段封装器可以在设置或获取值时添加验证逻辑,确保输入的有效性。 2. **数据转换**:可以对...

    C#字段封装器(附源码)

    本文将详细解析标题为“C#字段封装器”的软件及其相关知识点,帮助你理解如何通过该工具提升开发效率。 字段封装是面向对象编程中的一个重要概念,它是数据隐藏的一部分,用于保护类的内部数据,防止外部代码直接...

    VS2008一次性将多个字段封装为属性的插件源码

    vs2008编写的可以一次性将多个字段封装为属性的插件源码。 安装方法: 1、把Addins文件夹复制到My Documents\Visual Studio 2008\这个文件夹下 2、把ModelTool.dll复制到C:\WINDOWS\addins\下,然后启动vs2008即可在...

    vs2008把所有字段一次性封装为属性的插件

    VS2008的"重构"——>"封装字段"功能一次只能封转一个字段,如果字段很多就会很麻烦,这个小插件可以根据选中的所有字段自动生成对应的属性和构造方法 用法: 1、首先写好所有的字段,比如: private int id; string...

    一个简单的C#字段封装器

    C#字段封装工具可能是一个能够自动为类的字段生成对应的属性的实用工具。这个.exe文件可能是一个命令行工具或者GUI应用程序,输入包含字段的类定义,输出带有相应封装属性的类代码。这有助于提高代码的规范性和可...

    PropCreator 属性自动封装器 —自动读取数据库字段封装为属性

    支持手动输入字段 支持自定义类型(在) 例:Model.User 支持添加注释 支持初始化 //初始化方法:在“初始化”列输入类似...支持直接从数据库读取字段名称和类型完成属性封装 这个用法没什么好说的,试试就知道了!

    字段封装器/属性/枚举自动生成器

    在编程领域,字段封装器、属性以及枚举是常见的数据处理和对象模型构建的重要组成部分。字段封装器(Field Wrapper)通常用于对类的私有字段进行封装,提供getter和setter方法,以保护字段的安全性,避免直接外部...

    VS2008一次性将多个字段封装为属性的C#插件源码,支持C#和VB.NET

    vs2008下使用C#编写的可以一次性将多个VB.NET字段或C#字段封装为属性的插件源码。 可以封装C#属性,也可以封装VB.NET属性,是对我另一个资源(http://download.csdn.net/detail/new_coming/5518813,这个资源只能封装...

    关于属性与字段的区别

    属性为类提供了一种有用的封装数据的方法,而字段则是类的数据成员。 属性的特点 属性的使用可以简化语法,例如 `o.set(o.get()+1);` 和 `o.value++;`。属性的灵活性使得内部数据和外界获取相分离,内部数据的更改...

    字段2属性,一次性转换多个字段

    在.NET框架中,属性(Property)是类的重要组成部分,它提供了对字段的访问控制和封装。通常,我们使用Visual Studio的自动代码生成工具来创建基于字段的属性,但这种工具往往只能一次处理一个字段。然而,在某些...

    C#字段封装工具 1.0.zip

    工具中的"C#字段封装工具skycn.exe"是主程序,执行字段封装操作。只需指定包含C#类的源代码文件,工具就能自动检测并转换字段为属性。这简化了编码过程,尤其对于大型项目,能显著减少代码量。 "说明_Readme.html"...

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

    这行代码会自动生成一个私有的字段,并提供`get`和`set`访问器,但仍然保持了对字段的封装和访问控制。 #### 方法:行为的实现与交互 **方法**是C#中用于实现类的行为的成员,它们是执行特定任务的代码块。方法...

    编程语言中属性和字段的区别

    这里的属性类似于字段,但更多地是从设计的角度考虑,描述对象应该具备什么样的特性和状态。例如,在设计一个学生类时,可能会列出姓名、年龄等属性。 #### 六、其他语言中的实现 不同的编程语言对属性和字段有...

    c# 属性字段生成工具2011-09-01

    c# 属性字段生成工具 可以有空格; 2011-09-01日上传; vs2008自带的一次只能封装一个字段; 我们可以先把字段写出来;生成后再粘回去;

    字段与属性

    在这个例子中,我们通过属性 `Balance` 实现了对 `_balance` 字段的访问控制,确保了数据的有效性和安全性。 #### 六、结论 字段和属性都是面向对象编程中非常重要的概念。字段用于直接存储数据,而属性则提供了一...

    根据表名创建实体类的字段和属性.(单个表生成)存储过程快速生成

    在软件开发中,实体类通常用于封装数据库表中的数据,提供对数据的操作接口,如增删改查等。实体类的设计往往需要根据数据库表结构进行,包括字段名称、数据类型等属性。手动创建这些实体类不仅耗时,而且容易出错。...

    使用属性升级MyBank.zip

    属性是类的成员,用于封装类的私有字段,提供数据访问控制。它们类似于传统面向对象语言中的getter和setter方法,但在C#中更加简洁且符合面向对象的原则。属性允许我们在代码中限制对数据的直接访问,确保数据的安全...

    C#中类、属性、字段、方法举例

    字段是存储数据的地方,而属性提供了对字段的安全访问,通常用get和set访问器来控制读写操作。构造函数在创建对象时被调用,允许我们初始化对象的状态。 属性(Properties)是C#中的一个重要特性,它允许我们封装...

    访问非公有字段和属性的组件

    总结起来,访问非公有字段和属性在特定场景下是必要的,但应谨慎使用,因为它可能破坏封装性,增加代码的复杂性和脆弱性。在设计系统时,尽量通过提供公共API来满足需求,而不是依赖于内部实现的细节。如果确实需要...

Global site tag (gtag.js) - Google Analytics