type
status
date
slug
summary
tags
category
icon
password
Property
Aug 14, 2023 12:00 PM

本节内容

  • 字段
  • 属性
  • 索引器
  • 常量
notion image

字段

什么是字段
  • 字段(field)是一种标识与对象或类型(类与结构体)关联的变量
  • 字段是类型的成员,旧称“成员变量”
  • 与对象关联的字段亦称“实例字段”(修饰实例)
  • 与类型关联的字段称为“静态字段”,由static修饰(修饰数据类型)
字段的声明
  • 参见C#语言定义文档
  • 尽管字段声明带有分号,但它不是语句
  • 字段的名字一定是名词
字段的初始值
  • 无显式初始化时,字段获得其类型的默认值,所以字段“永远都不会未被初始化”
  • 实例字段初始化的时机–对象创建时
  • 静态字段初始化的时机–类型被加载(load)时
只读字段
  • 实例只读字段
  • 静态只读字段
变量:存储数据
filed :田地,空间。
语句出现在函数体里面,字段声明出现在类里
实例构造器可以执行多次,静态构造器只执行一次
readonly 只读,保存初始化后不能改变的值

属性

什么是属性
属性(property)是一种用于访问对象或类型的特征的成员,特征反应了状态
  • 属性是字段的自然扩展
    • 从命名上看,field更偏向于实例对象在内存中的布局,property更偏向于反映现实世界对象的特征
    • 对外:暴露数据,数据是可以存储在字段里的,也可以是动态计算出来的
    • 对内:保护字段不被非法值“污染”
  • 属性由Get/Set方法对进化而来
  • 又一个“语法糖”–属性背后的秘密
属性的声明
  • 完整声明–后台(back)成员变量与访问器(注意使用code snipaste和refactor工具)
  • 简略声明–是有访问器(查看IL代码)
  • 动态计算值的属性
  • 注意实例属性和静态属性
  • 属性的名字一定是名词
  • 只读属性-- 只有getter没有setter
    • 尽管语法上正确,几乎没有人使用"只读属性",因为属性的目的主要是通过向外暴露数据而标识对象/ 类型的状态
属性与字段的关系
  • 一般情况下,他们都用于表示实体(对象或类型)的状态
  • 属性大多数情况下是字段的包装器(wrapper)
  • 建议:永远使用属性(而不是字段)来暴露数据,即计算永远都是private或protected的
快捷键 propfull
简略声明,简单传递数据
只读
动态计算值的属性

索引器(概述)

什么是索引器
  • 索引器(indexer)是这样一种成员:它使对象能够用与数组相同的方式(即使用下标)进行索引
索引器的声明
  • 参见C#语言定义文档
  • 注意:没有静态索引器
快捷键:index+Tab*2
可空类型点Value才是这个类型真正的值

常量

什么是常量
  • 常量(constant)是标识常量值(即,可以在编译时计算的值)的类的成员
  • 常量隶属于类型而不是对象,即没有“实例常量”
    • “实例常量”的角色由只读实例字段来担当
  • 注意区分成员常量和局部常量
常量的声明
各种“只读”的应用场景
  • 为了提高程序可读性和执行效率–常量
  • 为了防止对象的值被改变–只读字段
  • 向外暴露不允许修改的数据–只读属性(静态或非静态),功能和常量有一些重叠
  • 当希望成为常量的值其类型不能被常量声明接受时(类/自定义结构体)–静态只读字段
    CS 61A(Part 11) - Mutable SequencesC#知识学习—12 表达式,语句详解(3)
    • Waline
    Kitety
    Kitety
    独特为佳
    公告
    我曾经七次鄙视自己的灵魂
    --卡里·纪伯伦
    第一次,当它本可进取时,却故作谦卑;
    第二次,当它在空虚时,用爱欲来填充;
    第三次,在困难和容易之间,它选择了容易;
    第四次,它犯了错,却借由别人也会犯错来宽慰自己;
    第五次,它自由软弱,却把它认为是生命的坚韧;
    第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
    第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
     
    最新评论
    Loading...