今日敲代码时,突然感觉对类的属性封装、字段有点犯迷糊了。。连基础的都不知道了,那敲的代码怎么能严谨高效的。果断拿起各种高级编程、大全啥的翻起来~~这不再把自己的理解写下来(定义都是直接抄书的),献给同样迷糊的小伙伴。
先说下类的成员,它分为数据成员和函数成员。数据成员,简单点可以理解成类的数据,包含了字段、常量(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#简单入门
NULL 博文链接:https://coolszy.iteye.com/blog/453311
由于VS一次只能封装一个字段,所以写了本软件,能一次封装多个字段,此外还能添加自己定义的数据类型。
c#语言现今的应用十分广泛,本例是其在类对象中对静态成员进行操作的一个实例
C#内内字段封装助手软件的确不错!让你更简单的给C#类封装............
c# RabbitMQ封装类,连接发送接收解析都支持
c# 日志记录封装类,存储为日志文件
c#语法详解c#语法详解c#语法详解c#语法详解
数据实体类中如何给属性赋值.因为从数据库中取出来的是一个DataSet如果一个一个给数据实体类中的属性赋值显的非常的笨拙,而且我们的数据表多达100个.在网上搜索了下写出了个简单的方法,代码如下: 首先我们做个实体...
C#基础与案例开发详解 C#基础与案例开发详解 C#基础与案例开发详解 C#基础与案例开发详解 C#基础与案例开发详解
C# socket封装类和组件含例程全部开源,可以说全网封装最好的C#类,十分强大,亲测很好,值得参考和学习
c# 属性字段生成工具 可以有空格; 2011-09-01日上传; vs2008自带的一次只能封装一个字段; 我们可以先把字段写出来;生成后再粘回去;
直接从数据库中取出字段进行封装成一个类!不用为封装很多的字段而发愁!
一个经过封装的类,封装.NET原有的Serial Port控件,拥有更加灵活的使用。
C# FTP操作封装类,直接使用,方便快捷!
以两点间距离计算为例,说明C#类的封装与使用、结构体申明与使用等,本示例时使用Visual Studio .net 2019社区版编写的。
c# http请求webapi接口封装类
C#操作mysql数据库的封装类,带注释,代码完整,适合企业级开发