zoukankan      html  css  js  c++  java
  • C#字段和属性

    之前一直分不清楚字段和属性的合理用法,以及命名规则,现简单整理。

    C#的编程准则

    标识符的规则:

    • 尽管可以包含数字字符,但它们必须以字母或下划线开头。(而且虽然从语法上看,在标识符中可以使用下划线字符,但大多数情况下最好不要这么做。我个人理解为除了字段命名的首字符使用下划线外,其他命名中都不要使用。)
    • 不能把C#关键字用作标识符。

    命名约定(这里主要说明大小写规则):

    • Pascal大小写形式:形如EmployeeSalary,适用于名称空间和类,以及基类中的成员等的名称。
    • Camel大小写形式:形如employeeSalary,适用于①类型中所有私有成员字段的名称,其中成员字段前缀加下划线_,②方法的形参,③属性封装字段中字段的命名。

    字段

    是与类相关的变量,最好把字段声明为private,使用属性来访问字段。

    字段应总是私有的,因为设置成共有不利于以后扩展或修改类。(?)

    • 一般私有的字段写成Camel形式:private string firstName;
    • 和属性成对出现时使用加前缀下划线的Camel形式:private string _firstName;public string { get { return _firstName; } set { _firstName = value; } } 给字段名加上下划线作为前缀,为识别字段而不是局部变量提供极大的便利。(那是不是与类相关的变量叫做类的字段,而无关的叫做局部变量?)
    • 写成公有时使用Pascal形式:public string FirstName;

    属性

    是一个方法或一对方法,在客户端看来,它是一个字段。

    • 可以向get和set访问器中写方法。
    • 如果get和set访问器中没有任何逻辑,可以使用自动实现的属性:public int Age { get; set; } 编译器会自动创建私有字段,名称不知。初始化写法:public int Age { get; set; } = 42;
    • 可以给属性的get和set访问器设置不用的访问修饰符,但get和set访问器必须至少有一个具备属性的访问级别。public string { get { return _firstName; } private set { _firstName = value; } }

    区分使用属性和方法

    • 满足以下所有条件就设置为属性,否则就应使用方法:
    • 客户端代码应能读取它的值。最好不使用只写属性,例如,应使用SetPassword()方法,而不是Password只写属性。
    • 读取该值不应花太长时间。
    • 读取该值不应有任何明显的和不希望的负面效应。
    • 可以按照任何顺序设置属性。
    • 顺序读取属性应有相同的结果。如果属性的值可能会出现预料不到的改变,就应把它编写为一个方法。在监控汽车运动的类中,把speed设置为属性就不合适,而应使用GetSpeed()方法;另一方面,应把Weight和Height设置为属性,因为对于给定的对象,他们是不变的。

    参考:C#高级编程(第10版)第2章&第3章

  • 相关阅读:
    iOS:网络检测
    WinJS:设置listView垂直滚动
    iOS:在AppDelegate中定义managed object context
    简笔画项目总结: ios绘图机制 & 实现记录笔迹功能
    CSS基础
    DOM小结
    iOS:view.frame
    WP:初探
    iOS:UIWebView scrollView 的分页滑动问题
    Mono for Android: 利用mono for android开发的第一个程序
  • 原文地址:https://www.cnblogs.com/zwh1993/p/11263661.html
Copyright © 2011-2022 走看看