C#——常量,字段,索引器,属性

字段

  • 什么是字段
    字段是一种表示与对象或类型(类与结构体)关联的变量
    字段是类型的成员,旧称“成员变量”
    与对象关联的字段亦称“实例字段”
    与类型相关联的字段称为“静态字段”,由 static 修饰
  • 字段的声明
    字段的声明一定是名词
    尽管字段带有分号,但不是语句
    (特性) (修饰符)数据类型 标识符;
  • 字段的初始值
    无显式初始化时,字段获得其类型的初始值,所以字段“永远不会未被初始值”
    实例字段初始化的时机——对象被创建时
    静态字段初始化的时机——类型被加载(load)时
  • 只读字段
    实例只读字段
    静态只读字段

字段修饰符:new, public,private, protected, internal, private, static, readonly(只读), volatile
ps

  1. 只读字段只能在构造器中赋值,只有一次
  2. 静态字段在静态构造方法中赋值

属性

  • 什么是属性
    属性是一种用于访问对象或类型的特征的成员,特征反映了状态
    属性是字段的自然拓展
    从命名上看,字段更偏向于实例对象在内存中的布局,属性更偏向于反应现实世界对象的特征
    对外:暴露数据,数据可以存储在字段里,也可以是动态计算出来的
    对内:保护字段不被非法值“污染”
  • 属性的声明
    完整的声明—后台成员变量与访问器
    (特性)(修饰符) 数据类型 标识符{}
private int age;
public int Age
{
    get{return this.age}
    if(value >= 0 && value <= 120)
    {
        this.age = value;
    }
    else
    {
        throw new Exception("Age value has error");
    }
}

//   value 关键字表示传入的值

简略的声明—只有访问器
(特性)(修饰符) 数据类型 标识符{get;set} int x {get; set}
动态计算值的属性

private int age{get;set}
public bool Canwork
{
    get
    {
        if(this.age >= 18)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

注意实例属性和静态属性
属性的名字一定是名词
只读属性—只有getter没有setter(只写属性无意义)

  • 属性与字段的关系

索引器

  • 什么是索引器
    索引器:他使对象能够与数组相同的方式(即使用下标)进行索引
  • 索引器的声明

常量

  • 什么是常量
    常量是表示常量值(即可以在编译时计算的值)的类的成员
    常量隶属于类型而不是对象,即没有“实例常量”
  • 常量的声明
    (特性)const 数据类型 标识符 = 变量初始化器
  • 各种只读的场景
    为了提高程序的可读性—常量
    为了防止对象的值被改变—只读字段
    向外暴露不允许修改的数据—只读属性(静态或非静态),功能与常量有一些重叠
    当希望常量的值其类型不能被常量声明接受时(类/自定义结构体)——静态只读字段

你可能感兴趣的:(c#)