欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【.Net(C#)开发漫谈:关于变量的命名和属性】,下面是详细的分享!
.Net(C#)开发漫谈:关于变量的命名和属性
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直接读写 // } |
即使变量的访问是受保护的或者或者是私有的,也要使用属性存取器。
原则是:对于变量的读取,要用属性存取器封装,无论其访问修饰符如何,即使其属性存取器内除了存取目前没有任何其它逻辑。
以上所分享的是关于.Net(C#)开发漫谈:关于变量的命名和属性,下面是编辑为你推荐的有价值的用户互动:
相关问题:在C#语言中变量的命名规则
答:●变量名必须以字母开头 ●变量名只能由字母、数字和下划线组成,而不能包含空格、标点符号、运算符等其它符号。 ●变量名不能与C#中的关键字名称相同。 ●变量名不能与C#中的库函数名称相同。 int i; //合法 int No.1; //不合法,含有非法字符 strin... >>详细
相关问题:求.net对象控件、常量变量命名规范
答:如果追求执行效率的话,就不要使用C#,java这类的东东了 呵呵,总体上这类语言都不是执行效率高的东西。 实际我现在基本不用服务器控件,而选用模板引擎去实现 要讲效率的话,还是模板引擎效率高 ps:其实net2自己带的数据控件,其实都差不了多少,... >>详细
相关问题:关于C#的属性问题
答:public string FirstName{ get; set; } 这种方法是在.net 3以后支持的,简化了属性的写法。推荐用这种方法。 我们看这个 public string FirstName { get { return mFirstName; } //这个是当获取时,返回的值,比如 A.FirstName 获取到mFirstName... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
