c#笔记3(深入理解类)

类成员:类成员的声明语句 【特性】【修饰符】核心声明

类成员可以关联到类的一个实例,也可以关联到整个类,也就是所有实例。默认情况下,成员被关联到一个实例,可以认为类的每个实例都拥有自己的各个类成员副本,这些成员为实例成员

静态字段:被类的所有实例共享,所有实例都访问同一内存位置,因此,如果该内存位置的值被一个实例改变了,这种改变对所有实例都可见。static

 注意:静态成员的生存期与实例成员不同,只有在实例创建之后才产生实例成员,但是即使类没有实例,也存在静态成员,并且可以被赋值并读取。静态字段只与类有关,而与实例无关。

静态函数成员:静态函数成员不能访问实例成员,但可访问其他静态成员。

可以声明为static的类成员:字段、类型、方法、属性、构造函数、事件、运算符。

成员常量:同样const,但是声明在方法外,类内。

对比常量与静态量:成员常量对每个类的实例都可见,而且没有实例也可以使用,与静态量不同的是,常量没有自己的存储位置,而是在编译时被编译器替换,不可以将常量声明为static。

属性:属性是代表类实例或者类中数据项的成员,属性用来写入与取出字段的值。set/get

set访问器有隐参:value,返回类型void;get访问器没有参数,return返回值。属性不能显式访问。

 

属性与关联字段:属性常和字段关联,常见的方式是将字段声明为private封装,并声明一个public属性来控制从类外部对字段的访问。

属性与关联字段的命名约定:1:字段与属性名称相同,字段使用Camel大小写(复合词除第一个单词外每个单词首字母大写),属性使用Pascal大小写(复合词每个单词首字母大写)2:字段和属性名称相同都使用Camel大小写,但是字段前加“_”。

例如: 

lambda表达式对属性进行简化:

只读和只写属性:

只读属性:只有get访问器的属性

只写属性:只有set访问器的属性 (没意义)

至少定义一个访问器。

自动实现属性:c#提供了自动实现属性,允许只提供属性而不声明后备字段,编译器会创建隐藏的字段,并且自动连接到get、set访问器上。

 静态属性:属性可以声明为static,不能访问实例成员,但是可以被实例成员访问,在类内部可以使用名称引用,在类的外部可以类名.属性名或者using static 类的结构来引用。

实例构造函数:是一个特殊的方法,在创建每一个实例的时候执行。用于初始类实例的状态,如果希望能从类的外部创建类的实例,实例构造函数要是public的,没有用户自定义的实例构造函数,编译器也会建一个默认的构造函数,构造函数的名称与类名相同,没有返回值。

例如:

 DateTime类是从BCL引入的,Now是类DateTime的静态属性,Now属性创建了一个新的DateTime类的实例,将其初始化为当前的日期和时间,并return了。

对象初始化语句:对象创建表达式new后面一个类构造函数和参数列表,对象初始化语句扩展了语法,可以在{}内设置字段和属性。有两种形式,一种包含构造函数的参数列表,另一种不包括。

例如:

readonly修饰符:字段也可以用readonly修饰,一旦被设定就不再改变,但与const不同的是,const需要在声明时初始化,但是readonly修饰的字段可以在之后的任意位置初始化,可以是静态字段,也可以是实例字段,在内存中有位置。

this关键字:在类中使用,是对当前实例的引用,只能用于实例构造函数或者实例方法或者属性和索引器的实例访问器中,作用是用以区分类成员和局部变量或参数、作为调用方法的实参。

索引器:不想使用字段的名称访问了,想用索引的形式(类似于数组)访问,

索引器的声明:以this关键字代替名称,参数列表在方括号中,并且至少一个参数,get、set

例子:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值