c#中的字段是什么意思
1个回答
推荐于2017-09-18 · 知道合伙人软件行家
关注
展开全部
字段和属性是C#面向对象模式中的两个概念。
字段(field) 用来存储数值或对象的真正实体 简单说是私有变量(不一定是私有...)
属性(property) 对字段的封装(也不一定- -) 有get段落和set段落 通常是公开的 通常get段和set段执行过程都是轻量的(这是一个语义约定 也是C#不同于java的地方 重量级 耗时的获取也要用函数来表达而不是属性 java就没这种语义了 一律get- -)
字段和属性都属于类的成员
我说的不一定是因为通常它们是这么用的 但是在不同设计模式和上下文场合 字段的私有会造成取值赋值的效率降低 比如你不得不对一个占用64字节的结构体频繁取值赋值 就用公开字段好了...
属性是个非常奇妙的东西 它包含着写段落和读段落所以又叫读写器 正常的意义是field的wapper 因为你可以通过只写get段或set段 对字段达到只读和只写的访问控制 甚至可以对get和set加上访问权限修饰符 比如protected get; private set;
因为get和set段像是两个函数一样 所以你可以在里面写很多奇怪的东西达到不同的设计期望 比如get里可以先判断if (字段==null ) new() return 字段;的这种单例模式设计 set里则可以加上事件触发和有效性判断等逻辑 所以合理的利用属性这种语法对C#程序设计很重要
字段命名加上下划线是类似匈牙利命名法的要求 表示它是private的
不过因为C#是大小写敏感的 你完全可以对字段采用camel命名法 而对属性采用pascal命名法加以区分 但是vb.net不一样 为了两种语言风格统一 你可以采用下划线的方式进行区分 这只是开发风格的问题
字段(field) 用来存储数值或对象的真正实体 简单说是私有变量(不一定是私有...)
属性(property) 对字段的封装(也不一定- -) 有get段落和set段落 通常是公开的 通常get段和set段执行过程都是轻量的(这是一个语义约定 也是C#不同于java的地方 重量级 耗时的获取也要用函数来表达而不是属性 java就没这种语义了 一律get- -)
字段和属性都属于类的成员
我说的不一定是因为通常它们是这么用的 但是在不同设计模式和上下文场合 字段的私有会造成取值赋值的效率降低 比如你不得不对一个占用64字节的结构体频繁取值赋值 就用公开字段好了...
属性是个非常奇妙的东西 它包含着写段落和读段落所以又叫读写器 正常的意义是field的wapper 因为你可以通过只写get段或set段 对字段达到只读和只写的访问控制 甚至可以对get和set加上访问权限修饰符 比如protected get; private set;
因为get和set段像是两个函数一样 所以你可以在里面写很多奇怪的东西达到不同的设计期望 比如get里可以先判断if (字段==null ) new() return 字段;的这种单例模式设计 set里则可以加上事件触发和有效性判断等逻辑 所以合理的利用属性这种语法对C#程序设计很重要
字段命名加上下划线是类似匈牙利命名法的要求 表示它是private的
不过因为C#是大小写敏感的 你完全可以对字段采用camel命名法 而对属性采用pascal命名法加以区分 但是vb.net不一样 为了两种语言风格统一 你可以采用下划线的方式进行区分 这只是开发风格的问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询