static readonly与const的变量,作用是一样的,无论访问修饰符是不是public,还是其它(private、protected、internal),变量名称一般为大写,中间以下划线。   public static readonly int MAX_HEIGHT;   public const int MIN_HEIGHT = 10;

有些程序员对大写不敏感,上例中,MAX_HEIGHT用Max_Height代替也未尝不可,甚至MaxHeight也可以。在.Net类库中,int.MaxValue与int.MinValue便是这样定义的。

  const常量更确切的说是编译时常量,因为它在运行时是不存在的,在编译中所有变量引用将被实际值替掉。而static readonly则不然,它在运行时也是存在的。从原理上讲,论效率const优于static readonly。但是在一个比较在的项目中,在dll局部升级时,如果改变了某个const变量的值,而未升级的dll如果也有这个const变量的 话,显而易见这时候问题将是产生。如果因此而升级全部dll,反而不值。所以在大型、多变应用中,建议使用static readonly代替const。其微乎其微的效率的减损对比升级布置可能出现的问题还是可以接受的。

  除了以上两种静态只读和常量变量之外,其它变量命名均以下划线开始,访问修改符为private(不建议命名为internal、protected,更不建议命名为public):   private static int _maxHeight;   private int _minHeight; //如果其命名不前置下划线,易与参数变量混淆。

  对于下面这种定义:   private int _minHeight = default(int);   public int MinHeight   {    set{    _minHeight = value;    }    get{    return _minHeight;    }   }

  初学者可能觉得有点画蛇添足,不如直接命名为:

  public int MinHeight; 这样岂不简单,干吗还要用getter和setter封装起来,额外的函数调用也使效率有损。

  有时候在开发项目时,开始时我们要画的可能只是一条蛇,但是项目后期需求变了,改画一条龙了。所以在项目初期画蛇的时候添上一对足还是很有远见的。

  getter与setter(属性存取器)可以像方法一样封装逻辑并且像变量一样使用,建议所有非静态只读和常量,定义为 private,然后给其添加相应属性存取器,用于赋值与读取。在其它方法体内(包涵类外与类内),不建议直接读写变量。即使它目前可以被直接读写,我们 也要通过调用属性存取器也调用。这一点有点麻烦,但很重要,很高老手有时也会犯错误。如下所示:   private int _minHeight = int.MinValue;   public int MinHeight //或者是protected、internal,甚至是private   {    set{    _minHeight = value;    //即使这里目前没有其它处理逻辑    }    get{    return _minHeight;    }   }   public void Method1(int minHeight)   {    this.MinHeight = minHeight;//在这里不要使用this._minHeight直接读写    //   }

  即使变量的访问是受保护的或者或者是私有的,也要使用属性存取器。

  原则是:对于变量的读取,要用属性存取器封装,无论其访问修饰符如何,即使其属性存取器内除了存取目前没有任何其它逻辑。

转载于:https://www.cnblogs.com/ttlive/archive/2008/06/18/2191372.html

关于变量的命名和属性(C#)相关推荐

  1. 详解.Net中变量的命名和属性

    static readonly与const的变量,作用是一样的,无论访问修饰符是不是public,还是其它(private.protected.internal),变量名称一般为大写,中间以下划线. ...

  2. python语言变量随时命名随时赋值_Python变量及数据类型用法原理汇总

    变量(Variable)可以看成一个小箱子,专门用来"盛装"程序中的数据.每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据. 从底层看,程序中的数据最终都要放到内存 ...

  3. 编程 - 变量的命名方法

    1.引言 随着计算机技术的不断发展,计算机计算能力的提升催生了大量大型软件的出现,大型软件的代码量动辄成千上万行,甚至数十万行.随着代码量的指数级增长,以前未曾注意的"小"问题也明 ...

  4. javascript 变量的命名规则和命名规范

    ​ 变量的命名规则和命名规范 - 规则: 必须遵守的,不遵守就是错 一个变量名称可以由 数字.字母(a-zA-Z).英文下划线(_).美元符号($) 组成,如:userrAge, num01, _na ...

  5. Python|Git remote|hosts|PyCharm常用快捷键|变量转换|命名|类型|运算符|分支|调整tab|循环|语言基础50课:学习记录(1)-项目简介及变量、条件及循环

    目录 系列目录 均引自原项目地址: Python语言基础50课简介及相关网址 修改 hosts 文件 解决 GitHub 上图片无法显示 视频资源 Python语言基础50课代码等文件资源 表1. P ...

  6. python正确的变量名称_Python基础之变量的命名

    变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图: 标示符可以由 字母.下划线 ...

  7. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

  8. IOS开发中的变量、方法、属性

    转自 :http://www.0jl.com/?p=509 1.在Objective语言中可以声明实例变量(Instance Variables). 变量有四种访问范围: 私有(private): 在 ...

  9. Matlab变量及其命名规则

    变量及其命名规则 l        变量 1.        变量名的大小写是敏感. 2.        变量的第一个字符必须为英文字母,而且不能超过31个字符. 3.        变量名可以包含下 ...

最新文章

  1. java io 网络编程_[笔面] Java IO和网络编程相关面试
  2. 一个基于C++的多线程编程实例(CreateThread函数)
  3. 神经网络第五周tutorial解析
  4. 使用Redis的简单消息队列
  5. cloudquery.php态势感知,CloudQuery v1.3.4 版本更新
  6. c语言程序设计 k,《C语言程序设计》谭浩强版-教学教案 k.doc
  7. java 时间格式化 注解_Java关于时间格式化的方法
  8. 【ATSC】美国第二大有线电视公司-Charter
  9. 【嵌入式06】寄存器方式和HAL库方式实现 串口通信“hello windows!”+流水灯
  10. 模具工业及其发展趋势
  11. 注册页面提交验证-密保问题实现
  12. 《机器学习100修炼秘籍》
  13. C51---13 DS18B20温度传感器
  14. 【t042】炮击坦克
  15. 【关于burpsuite字体乱码/偏移问题】
  16. codeforce Anton and Fairy Tale
  17. 关于我Camstar的博文
  18. 移动端文字与排版设计的六个原则
  19. 【前端 HTML+CSS+JavaScript(JS)】DOM练习-checkbox实现全选 带注释/总结
  20. C语言编辑个人信息,十万火急:用c语言打印个人信息,怎么着?

热门文章

  1. PetShop 4.0 SQLHelper
  2. java 蓝桥杯算法训练 整除问题(题解)
  3. (18)ISE14.7调试核名称与顶层名称不一致导致生成bit报error(FPGA不积跬步101)
  4. (52)Xilinx差分原语-IBUFGDS与OBUFGDS(第11天)
  5. (38)FPGA面试技能提升篇(C/C++、questasim仿真工具)
  6. 2021年CBA总决赛第二场预测
  7. python闯关游戏,Python挑战游戏( PythonChallenge)闯关之路Level 0
  8. 【STM32】FLASH擦写+FLASH相关操作+注意事项
  9. 向shell脚本中传入参数
  10. proc_fs文件的操作