C#封装字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#封装字段相关的知识,希望对你有一定的参考价值。

我先写了int name;然后选定,右键,重构,封装字段。
但是编译器弹出一个框,说:请选定要封装的字段定义。
这个是什么意思?????
要怎么才能顺利封装。
注:用的VS

既然叫字段。那意思就是说他包括了属性和方法。

你是不能将你要封装的字段int name写在任何方法里的。包括main方法。你只能写在类名下。就像全局变量一样。
参考技术A 重构:
CTRL + R, E:显示封装字段窗口,可以将字段封装成属性
CTRL + R, I:显示提取接口重构窗口
CTRL + R, M:显示提取方法重构窗口
CTRL + R, P:显示将局部变量提升为参数窗口
CTRL + R, V:显示移除参数窗口
CTRL + R, R or F2:显示重命名窗口
CTRL + R, O:显示重新排列参数窗口
参考技术B 好像是一次只能封装一个,但可以用快捷键,很快的,不再需要鼠标!
ctrl+R,ctrl+e,然后2次回车,可明显提高速度
参考技术C 我这里没有这个问题呀,写上int name; 然后封装字段,弹出确认属性名的窗口,再弹出确认窗口,就OK了。
你是不是没有在字段定义那行去点右键呀?
参考技术D 只选中name,然后进行你刚才说的,你把int也选进去了。

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就是它的参数,其中包含为这个字段设置的值。其实这就是用属性来对字段进行封装(这就是封装啦)。

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

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

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

如果是:

 public string Name { get; set; }

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

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

以上是关于C#封装字段的主要内容,如果未能解决你的问题,请参考以下文章

C#中为啥使用字段封装

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

C# 自动属性来包装私有字段?

c#封装和类的属性课堂上机练习

C# PropertyGrid 简单使用

C#访问修饰符