网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C#教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.C# 编码规范和编程好习惯.
.基于C#的接口基础教程之二.
.在c#中执行sql语句时传递参数的小.
.一个用c#写的扫描asp源码漏洞的应.
.C# 中的类型转换.
.Excel 2007单元格及内容的合并、.
.C#的多线程机制初探(4).
.C#语言初级入门(1).
.C# 3.0新特性初步研究 Part5:匿名.
.基于C#的接口基础教程之五.
.数据结构与算法(C#实现)系列---广.
.C#,深入浅出全接触(三).
.c#学习笔记(1).
.C#的多线程机制初探(3).
.datagridcolumnstyle重写,实现插.
.C#基础全接触.
.数据结构与算法(C#实现)系列---N.
.switch语句的“不准遍历”.
.SUNWEN教程之----C#进阶(二).
.c#时间增加并对比做法.

.Net(C#)开发漫谈:关于变量的命名和属性

发表日期:2008-6-5


 

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直接读写 
   // 
   }

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

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

上一篇:C# 3.0新特性系列:隐含类型var 人气:11495
下一篇:C#编程实用技巧:轻松实现对文件的操作 人气:11131
浏览全部C#的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐